UI でバインドしている約束があります。promise が解決され、UI 要素がレンダリングされると、その UI 要素をクリックできます。クリックを処理するコントローラー コードでは、promise の値に基づいて行動したいと考えています。私のAngularコードのこの時点で、私は約束が解決されたことをすでに知っています..しかし、値を取得したいときはまだ約束です。
約束の価値を得る最良の方法は何ですか...それが解決されたに違いないことがわかっているとしたら?
UI でバインドしている約束があります。promise が解決され、UI 要素がレンダリングされると、その UI 要素をクリックできます。クリックを処理するコントローラー コードでは、promise の値に基づいて行動したいと考えています。私のAngularコードのこの時点で、私は約束が解決されたことをすでに知っています..しかし、値を取得したいときはまだ約束です。
約束の価値を得る最良の方法は何ですか...それが解決されたに違いないことがわかっているとしたら?
約束は常に約束です - そしてそれはそうあるべきです。promise をビューに直接バインドすることは可能ですが、透明性に欠け、ビューのちらつきにつながる可能性があるため、私は通常、この方法をお勧めしません。then
より良い解決策は、呼び出しでスコープ値を割り当てることです。
myService.then(function( val ) {
$scope.val = val;
});
の準備ができたら$scope.val
、いつでも直接値として扱うことができます。
そうは言っても、promise の代入を直接行いたい場合は、それを promise のように扱う必要があります。つまり、 を呼び出す必要がありますpromise.then(function () { ... });
。これは不便に思えますが、Promise がいかに強力であるかの証です。
Promise についてさらに詳しい情報が必要な場合は、最近の Google+ ハングアウトでそれらについて詳しく説明 (およびコード例を提供) し、AngularJS での Promise の利点、一般的な使用方法、およびベスト プラクティスについて説明しました: AngularJS Hangout -- Promises, Promises Promises 、約束します。終わりのないプロミス チェーンのアイデアは具体的に取り上げられましたが、頭のてっぺんにタイムコードはありません。
お役に立てれば!