2016-05-09 11 views
1

私は非同期呼び出しチェーンを採用しました。私は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 
} 

を持っています。 ありがとうございました。

答えて

3

$q.all()を使用できます。それは一連の約束をとり、約束を返し、その配列内のすべての約束が解決されたときに解決されます。

例:

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

返さ約束はあなたが渡された約束の解決された値を含む、配列で解決されますあなたがあなたの約束が、何とかサービスから導出された単一の値を返すようにしたい場合。結果を受け取るには、.thenを追加して、何らかの形で最終的な約束の結果を計算してください(上記のコメントのように)

+0

。function()で返す値を返します。私はdefer.resove(結果)を書く必要がありますか? –

+0

@NaushadAhmad単純に 'return' it :-) – LionC

+0

ありがとう@LionC :) –

関連する問題