2017-09-21 16 views
0

この投稿は既に解決済みのものです。文脈で取得するには、それを見てください:Nesting promises with $resources in AngularJS 1.0.7

このアプローチを念頭に置いて、私は関数を並行して呼び出したいと思います。両方が完了したら、結果とともにsearchBoats関数を実行してください。私は約束を入れ子にすることができると思うが、$ q.allと並行してやることもできると思う。残念ながら、この約束の話題は私にとっては紛らわしく、私はそれをやる方法を知らない。

前のポストを例に取ると、私のような何かをしたいと思います:以前の問題のよう

var parseURL = function() { 
    var deferred = $q.defer(); 
    var promise = deferred.promise; 
    promise.then(function success(result) { 
    console.log(result); 
    searchBoats(result); 
    }); 

    // Instead of resolve when parseBoatType promise is returned, I would like to 
    // wait for two promises 
    parseBoatType().then(deferred.resolve); 
    parseDestination().then(deferred.resolve); 
    // of course, with this code deferred will be resolved when first promise 
    // comes. Is it possible to use $q.all here? 
}; 
parseURL(); 
+0

私はあなたに最初の質問で '$ q.all()'を使う方法を示しました。あなたは待つ必要のある関数でPromiseを返す必要があり、待つべき関数呼び出しによって返される約束の配列を '$ q.all()'に渡す必要があります。 – zero298

答えて

1

を、ここdeferredを使用する必要はありません。

var parseURL = function() { 
    $q.all([parseBoatType(), parseDestination()]) 
     .then(function (results) { 
      console.log(results); 
      searchBoats(results); 
     }); 
}; 
parseURL(); 
+0

ありがとうございます!全体のパズルに合うのに3日かかった。 – Rober