首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步typescript到同步typescript

异步typescript到同步typescript
EN

Stack Overflow用户
提问于 2017-08-14 01:09:37
回答 2查看 3.2K关注 0票数 1
代码语言:javascript
复制
postPersonalDetails(pdData){
let options : RequestOptionsArgs;
let token:string;
let id:string;
this.getToken().then((val) => {
  token = val;
  console.log("I am in token func"+token);
});
this.storage.get('userID').then((val) => {
  id = val;
  console.log(val);
});
console.log("I amhere"+token+id);

我正在获取第1个consoleLog和第2个控制台日志中的数据

由于异步的本质,第三控制台日志首先打印,我得到的令牌是未定义的,用户ID也是未定义的,这样做的正确方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-08-14 02:07:01

angular设置附带core-js和用于Promise的polyfill。您可以将您的承诺与Promise.all (see MDN with a detailed method explanation)合并,然后在两个承诺都得到解决后继续。

代码语言:javascript
复制
Promise.all([
  promise1, promise2, ...
])

请记住,如果组合承诺中的一个被拒绝,Promise.all就会拒绝。

票数 3
EN

Stack Overflow用户

发布于 2017-08-14 08:33:35

以下是关于PerfectPixel提议的更多细节。

代码语言:javascript
复制
const promise1 = this.getToken().then((val) => {
  console.log("I am in token func"+val);
  return val;
});

const promise2 = this.storage.get('userID').then((val) => {
  console.log(val);
  return val;
});

Promise
  .all([promise1, promise2])
  .then((results) => {
    const [ token, id ] = results;
    console.log("I am here"+token+id);
  });
}

这是一个更通用的例子。(有关副作用的更多详细信息,请参阅Bergi的评论。)

代码语言:javascript
复制
const promise1 = Promise.resolve("the-token").then((val) => {
  console.log("I am in token func: " + val);
  return val;
});

const promise2 = Promise.resolve("the-userID").then((val) => {
  console.log("I am in id func: " + val);
  return val;
});

Promise.all([promise1, promise2]).then((results) => {
  const [ token, id ] = results;
  console.log("I am here: " + token + " " + id);
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45662859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档