I次のコードを持っている:
function getData(foos, bars) {
var generated = {};
return $q(function(resolve, reject) {
var promises = _.map(foos, function(foo) {
return _.map(bars, function(bar) {
return someServiceCall(foo, bar).then(function(data) {
_.set(generated[foo.id], player.id.toString() + '.data', data);
});
});
});
// Join all promises in to a final resolve
$q.all(promises).then(function() {
resolve(generated);
}, reject);
});
}
私は何を達成したいことはすべてsomeServiceCall
-sを持つことであり、それは時間resolve(generated)
で仕上げ、成功のハンドラが呼び出されます。開発者ツールバーのこのコード部分をデバッグすると、すべての約束に対して成功ハンドラsomeServiceCall
が呼び出される前にresolve(generated)
が呼び出されます。
注:オブジェクトが参照として渡されるので、これは必ずしも機能を破壊しません。したがって、resolveがすでに呼び出されていてもデータは設定されますが、これらの呼び出しがすべて完了していれば機能はより明確になります。時間解決が呼び出されます。