异步调用延迟和承诺链

Asynchronous call defer and promise chain

我坚持使用异步调用链。我尝试了 google 但找不到确切答案。

要求我有一个方法

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 
}

任何帮助都是很大的帮助。 提前致谢。

您可以直接使用 $q.all()。它需要一组承诺和 returns 一个承诺,当该数组中的所有承诺都已解决时,它将解决。

示例:

function callMultipleServices() {
    return $q.all([
        //Just some random functions returning promises...
        someAsyncService(),
        $http.get('http://google.de'),
        someOtherAsyncService()
    ]) //.then(function(resultArray) { return doSomethingWith(resultArray) }) 
}

returned promise 将使用一个数组解析,其中包含您传入的 promise 的已解析值。如果您希望您的 promise return 以某种方式从服务结果,只需添加一个 .then 获取结果并以某种方式计算您的最终承诺结果(如上面的评论)