我坚持使用ashync调用链。我试过谷歌,但无法找到确切的答案。
要求是我有一个方法
callApi(){
I am calling 4 service that all are asynchronous.
I want to chain all the asynchronous calls so that I can do
defer.resolve only when all request are done
}
任何帮助都会有很大的帮助。 在此先感谢。
答案 0 :(得分:3)
您可以使用$q.all()
。它需要一组promise并返回一个promise,当该数组中的所有promise都已解决时,它将解析。
示例:
function callMultipleServices() {
return $q.all([
//Just some random functions returning promises...
someAsyncService(),
$http.get('http://google.de'),
someOtherAsyncService()
]) //.then(function(resultArray) { return doSomethingWith(resultArray) })
}
返回的promise将通过一个数组来解析,该数组包含您传入的promise的已解析值。如果您希望您的promise返回以某种方式从服务结果派生的单个值,只需添加.then
得到结果并以某种方式计算您的最终承诺结果(如上面的评论)