2017-05-03 9 views
1

下記の$ q.allを使用して簡単なコードをテストしています。いくつかの$ qは約束事の配列の2番目のものを処理するのに非常に時間がかかり、バックエンドサーバーはタイムアウトしています。ブラウザの[ネットワーク]タブが表示されたとき、getAccountStatementListは200のステータスを返します。getInvoiceDetailsはサーバーのタイムアウト前にペンディングを示しています。これをどうやって解決するのですか?

var promises = [$http.get('getAccountStatementList'), $http.get('getInvoiceDetails')]; 

$q.all(promises).then(function(values){ 
    console.log("Values 0 "+values[0]); // value alpha 
    console.log("Values 1 "+values[1]); // value beta 
    complete(); 
}); 
+0

これは、2番目のリクエストが完了していないため、バックエンドサーバーの問題のようです。要求がクライアントから適切に形成されているかどうかを確認し、そうであればサーバーコードを調べて、2番目の要求が完了していない理由を確認する必要があります。 – jfriend00

+0

ブラウザで直接2番目のリクエストを実行すると、結果を取得できました。 –

+0

また、私は私の約束を交換して、getInvoiceDetailsとgetAccountStatementListの保留中の状態を取得しました。 –

答えて

1

このエラーをキャッチするには、catchコールバックを使用できます。

$q.all(promises).then(function(values){ 
    console.log("Values 0 "+values[0]); // value alpha 
    console.log("Values 1 "+values[1]); // value beta 
    complete(); 
}).catch(function(error){ 
    console.log(error) 
}) 

これの没落は、1つの約束が拒否された場合でも、それはすぐにcatchに来ます。残りのバッチを待つことはありません。

+0

試しました。それは同じです。また、私は私の約束を交換し、今はgetInvoiceDetailsに対して200のステータスを取得し、getAccountStatementListは保留中のステータスを表示します –

関連する問題