异步调用延迟和承诺链

时间:2016-05-09 08:55:45

标签: angularjs asynchronous promise angular-promise deferred

我坚持使用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 
}

任何帮助都会有很大的帮助。 在此先感谢。

1 个答案:

答案 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得到结果并以某种方式计算您的最终承诺结果(如上面的评论)