84

then()プロミスを使用する場合、通常、継続コードを呼び出しとチェーンの動作に添付するだけであることを理解しています。

$timeout()ただし、プロミスでラップされた非同期呼び出しを開始してから、元のプロミスがまだ完了していない場合にのみ、UI アクションを実行できるように3 秒を個別に開始したいと考えています。(これは、接続が遅い場合や 3G のモバイル デバイスなどでのみ発生すると予想されます。)

promise が与えられた場合、ブロックまたは待機せずに、それが完了したかどうかを確認できますか?

4

5 に答える 5

46

これはAngularの最近のバージョンで追加されたと思いますが、今では約束に $$state オブジェクトがあるようです:

 var deferred = $q.defer();
 console.log(deferred.promise.$$state.status); // 0
 deferred.resolve();
 console.log(deferred.promise.$$state.status); //1 

コメントに記載されているように、Angular バージョンをアップグレードすると壊れる可能性があるため、これはお勧めできません。

于 2015-04-11T19:56:16.503 に答える