gpt4 book ai didi

javascript - jquery的done()下的代码在when()之前执行

转载 作者:行者123 更新时间:2023-11-28 13:47:12 26 4
gpt4 key购买 nike

为什么done()语句下的代码在when()下调用的其他3个函数之前执行?它立即消失。我认为when用于对函数进行排队,而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/

最佳答案

您需要使用 $.Deferred() 并返回 Promise。

function func1(first) {
var dfd = $.Deferred();

var t = setTimeout(function() {
$('body').append(first);
dfd.resolve();
}, 800);
return dfd.promise();

}

http://jsfiddle.net/NhAFN/2/

关于javascript - jquery的done()下的代码在when()之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com