2017-02-21 6 views
0

私はAngularJSとTypescriptを使用しています。私のコントローラコンストラクタでは、データを取得して約束を返す関数を呼び出します。約束は変数xに格納されます。AngularJS-約束が解決されないと中止するためのタイムアウト

x.then((data) => { 
    //displays data 
}, (err) => { 
    //sends error message 
}); 

約束が解決されない場合、今すぐ何も表示されません。 の解像度が長すぎると別のメッセージが表示されるように、$timeoutを使用します。私は約束のためにそれをどうやって行うことができるのか分かりません。 this.$timeout(3000,true).then(() => {});と呼ぶと内容が遅れてしまい、機能を遅らせることができます。約束が解決されない場合、どうすれば中止できますか?

+0

時間内に完了できなかった場合、[NodeJS Timeout a Promise]の可能な複製(http://stackoverflow.com/questions/32461271/nodejs-timeout-a-promise-if-failed-to-complete-in-time ) –

+1

[anglejsの約束事にタイムアウトハンドラを設定する]の可能な複製(http://stackoverflow.com/questions/22994871/setting-a-timeout-handler-on-a-promise-in-angularjs) – Nobita

答えて

0

AngularJSバージョン1.6が約束アボートするために使用することができる$q.race method導入:この例で

var timeoutPromise = $timeout(null, delay).then(() => {throw "Timeout Abort" }); 

var timedPromise = $q.race(xPromise, timeoutPromise); 

を、timedPromiseが解決(成就または拒否)するか、またはxPromiseで拒否される結果と理由「タイムアウトアボート」のどちらか早い方。

関連する問題