如何按顺序解决嵌套的$ q.all

时间:2018-10-04 10:47:00

标签: javascript angularjs deferred

在我的angularjs项目中,我有两个promise函数getToken()getUser(token)

我可以运行两个这样的操作:

$q.all({token: getToken(), userId: getUserId()})
.then(function(resolutions){
  var token  = resolutions.token;
  var userId = resolutions.userId;
});

但是我的getUserId()方法使用令牌作为参数。因此,我需要先获取令牌,然后获取userId并返回令牌和userId。如何使用$q来做到这一点?

我使用了这样的摩擦:

return getToken().then(function(token){
      return getUserId(token).then(function(userid){
            return {token: token, userid: userid};
      })
})

但是没有用,userid为null。

1 个答案:

答案 0 :(得分:0)

您可以像以下那样链接承诺

getToken()
.then(function(token){
     return getUser(token)
     .then(function(userId){
          return {token, userId};
      })
})