特定のデータを取得するために消費者によって呼び出される非同期 JavaScript 関数を作成しています。以下は、私が最初に書いた単純な実装です (わかりやすくするために、エラー処理やその他のものは削除されています)。
function getData(callback){
if (data is available as a JavaScript object){
callback(data);
}else{
getAsyncData(function(data){
//some transformations on data
callback(data);
});
}
}
注意すべき重要な点は、データが JavaScript オブジェクトとして既に使用可能な場合、getData はデータを迅速に返すことができるということです。
この実装を、promise オブジェクトを呼び出し元に返す実装に置き換えたいと考えています。このフィドルはサンプル実装を示しています - http://fiddle.jshell.net/ZjUg3/44/
質問 - getData はすぐに戻ることができるため、呼び出し元がthenメソッドを使用してハンドラー チェーンを確立する前であっても、getData がpromise を解決している可能性はありますか? これをシミュレートするために、フィドルで setTimeout 関数内のメソッドを呼び出した場合 (遅延なし)、コールバックは呼び出されません。setTimeout 関数の外でthenメソッドを呼び出すと、コールバックが呼び出されます。これが有効な懸念または有効なユースケースであるかどうかはわかりません。私は angularjs の開発にまったく慣れていないので、ご意見をいただければ幸いです :)