2016-08-19 9 views
0

角度$ qを使用して、$$州のプライベートプロパティを使用して約束の状態を検査する必要があるかどうか質問しています(保留中か完了しているかどうかを確認する)。

と仮定すると、このような状況:それは悪い習慣と考えられている

var promise = undefined; 
$scope.click = function(){ 
    if(promise != null && promise.$$state.status === 0) 
     return; 

    promise = doAsyncAnimation().then(function(){ 
     console.log('hey, i'm done!'); 
    }); 
} 

?それは私が必要とするものを正確に行い、私は仕事をするために別のブール変数を使うのは好きではありません。 どのくらいの資格がありますか?

+0

http://stackoverflow.com/questions/24091513/get-state-of-angular-deferredそれはそれを行う方法* *程度ではありません – mindparse

+0

質問、しかし、それが良い習慣とみなされる場合。 – Luxor001

+0

リンクは実際には灰色の領域にあります。いくつかの約束の実装は、API($ qが影響を受けたQを含む)を介して有望な検査を提供します。いくつかはしません。いくつかはしませんが、それでもやり遂げることができます。 $ qは後者に属します。有望な検査がうまくいく場合もあるが、問題はその一つではない。 – estus

答えて

2

$$内部で使用されるプライベートプロパティ/サービスを指定します。予告なく変更される場合があります。 the manualから

角度接頭辞$と$$:$と$$とプライベートオブジェクトの名前で、あなたのコードでパブリック・オブジェクトの角度プレフィックス名を不慮の名前の衝突を防ぐため。あなたのコード

$q$$stateに向けて重大な変更を導入することはほとんどありませんで$または$$接頭辞を使用しないでください。しかし、その使用は、約束が適切に使用されていないことを示します。

この場合、それは単に

ある
$scope.click = function(){ 
    if (promise) 
     return; 

    promise = doAsyncAnimation().then(function(){ 
     console.log('hey, i\'m done!'); 
    }) 
    .finally(function() { 
     promise = null; 
    }); 
} 
関連する問題