ฉันอ่านเกี่ยวกับ Deferreds และสัญญา$.when.apply($, someArray)
และให้มาข้าม ฉันไม่ชัดเจนเล็กน้อยว่าสิ่งนี้ทำอะไรได้บ้างโดยกำลังมองหาคำอธิบายว่าหนึ่งบรรทัดทำงานได้ตรงกันทั้งหมด (ไม่ใช่ข้อมูลโค้ดทั้งหมด) นี่คือบริบทบางส่วน:
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');
}
_.when
คุณไม่จำเป็นต้องใช้apply
.done()
สามารถใช้แทน.then
ในกรณีนี้ได้เฉพาะ FYI