私はreading about Deferreds and Promisesです。$.when.apply($, someArray)
を続けています。私はこれが正確に何であるかについて少しはっきりしておらず、という1行のが正確に(コード全体ではなく)動作するという説明を探しています。引数の配列を持つ関数を呼び出すために使用される
var data = [1,2,3,4]; // the ids coming back from serviceA
var processItemsDeferred = [];
for(var i = 0; i < data.length; i++){
processItemsDeferred.push(processItem(data[i]));
}
$.when.apply($, processItemsDeferred).then(everythingDone);
function processItem(data) {
var dfd = $.Deferred();
console.log('called processItem');
//in the real world, this would probably make an AJAX call.
setTimeout(function() { dfd.resolve() }, 2000);
return dfd.promise();
}
function everythingDone(){
console.log('processed all items');
}
'の.done()'このケースで.then' 'の代わりに使用することができ、ちょうどFYI –
FWIW、それを強調するために繰延ポートがあるのは、シングルを渡すことができます配列を '_.when'にして、' apply'を使う必要はありません – Eevee
'.apply'の詳細:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function /適用する。 –