2017-04-01 23 views
1

イム私は$ qを呼び出すために、このコードを使用しています

を要求します。すべて

$q.all(promises).then(function(data) { 
     console.log('All promises have resolved', data); 

     var retVal = Utils.DoStep2(); 
     console.log(retVal); 
}); 

この関数は決して私がチェックしたものではなく、$ http.getがすべての値に対して呼び出されることはありません。

  var deferred = $q.defer(); 
      $http.get(requestUrl). 
      then(function (data) { 
       var p = { 
        data: data, 
        name: name 
       }; 
       pData.push(p); 
       deferred.resolve(p); 
       return p; 
      }) 
      .catch(function (status) { 
       deferred.reject(status); 
      }); 

      promisesList.push(deferred.promise); 
もDoStep2 pDataをの長さとの

イム印刷pDataを使用して にconsole.logと私は何を取得することは0の長さと0オブジェクトのように探しているが、私はそれを開いたとき、それはすべてのオブジェクトのように見えます特定の呼び出しごとに$ http.get呼び出し内で初期化され、$ http.get応答が受信され、有効な応答であることが確認されました。

また、$ allは何が間違っている可能性がありますか?あなたの援助のための

おかげで

+0

1つの可能性は、すべてのリクエストに対して成功した回答が得られないことです。あなたが400の応答を持っているなら、 '$ http.get'への拒否と見なします。もう1つは '.then()'の実行時エラーです( 'pData'が宣言されていないので、' .push'が失敗する可能性があります) –

+2

[mcve]を指定してください。 '$ http'自体が約束を返すので、q.defer()'を呼び出す – charlietfl

+1

その他の問題: 'promisesList'をプッシュして' promises'で '.all'を呼び出します。とにかく '$ http.get'の結果は約束ですので、直接それをプッシュすることができます。 –

答えて

1

はOK、私はサービス機能のgetService()を使用し をそれを修正するために管理され、この機能は、各iはのgetService()約束はpromisesListにこのリストを返さ追加呼んで、その後の約束を返されたI $ allを使用するのを待っていました。 あなたのお手伝いがありがとうございました。