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

How can I resolve the nested $q.all by order

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

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

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

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

我是这样用chaniing的:

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

但是没有用,userid 变为空。

您可以像下面这样链接承诺

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