爲什麼在done()
語句下的代碼在when()
下調用的其他3函數之前執行?它立即開始。我想,當被用來排隊的功能和做的是使用時,當代碼是,好了,做執行的東西......在jquery done()之前執行的代碼when()
$(document).on('click', '.ajax', function() {
$.when(func1('<p>first</p>'), func2('<p>second</p>'), func3('<p>third</p>')).done(function() {
$('body').append('all done');
});
});
function func1(first) {
var t = setTimeout(function() {
$('body').append(first);
}, 800);
return "success";
}
function func2(second) {
var t = setTimeout(function() {
$('body').append(second);
}, 2700);
return "success";
}
function func3(third) {
var t = setTimeout(function() {
$('body').append(third);
}, 200);
return "success";
}
http://jsfiddle.net/loren_hibbard/NhAFN/
你知道這些功能正在返回' 「成功」'幾乎instantaneiously吧? 'setTimeout'運行併發。 – thatidiotguy
@thatidiotguy但如果我改變爲'return t;'或完全取消return語句,同樣的事情發生...... http://jsfiddle.net/loren_hibbard/NhAFN/1/ – 1252748
正確。什麼是問題?我告訴你,你的代碼在返回之前並沒有等待「超時」數量。 – thatidiotguy