我使用promises查询rest api(使用httpplease使用Promise plug-in):
api.call = function (myurl) {
return http.get({
"url" : myurl
});
}
这会返回一个我可以使用的承诺:
api.call (myurl)
.then (function (resp) {
// do whatever with the data
});
现在我正在尝试验证api连接,为此我需要将2个异步调用排队到其余的api: 1.-要求提供身份验证令牌 2.-使用身份验证令牌进行实际呼叫:
var getToken = function () {
var tokenUrl = "....";
return http.get({
"url": tokenUrl;
})
}
api.call = function (myurl) {
return getToken().then(function (token) {
return http.get({
"url" : myurl,
"headers" : {
"auth-token": token
}
})
})
}
客户端代码将保持不变:
api.call (myurl)
.then (function (resp) {
// do whatever with the data
});
不幸的是,上面的代码在第一个代码完成之前返回最终的承诺(即,在最后的#34中令牌是undef;然后是")。
我可能遗漏了一些东西,但我认为在阅读this后这应该有效:
"如果你返回一个值,那么下一个"然后"用该值调用。 但是,如果你返回类似承诺的东西,那么下一个"然后"等待 在它上面,并且仅在该承诺结算(成功/失败)时被调用"
知道怎么做吗?
米;
编辑:修正了代码中的拼写错误