gpt4 book ai didi

javascript - JQuery when().done() 无法正常工作

转载 作者:行者123 更新时间:2023-11-29 16:44:27 25 4
gpt4 key购买 nike

我需要运行一些动画链。我尝试使用以下代码,但 Second() 始终与 first() 同时运行

示例一:

var first = function(){
var d = new $.Deferred();
$('#ajax-contract-info').fadeOut(1400, function() {
$('#ajax-contract-info').removeClass('in');
$('#ajax-contract-info').css('display', '');
d.resolve();
});
return d.promise();
};

var second = function() {
var d = new $.Deferred();
$('#ajax-other-fields').fadeIn(1400, function() { d.resolve() });
return d.promise();
};

$.when(first())
.done(second());

示例二:

var first = function(){
return $('#ajax-contract-info').fadeOut(1400, function() {
$('#ajax-contract-info').removeClass('in');
$('#ajax-contract-info').css('display', '');
}).promise();
};

var second = function() {
return $('#ajax-other-fields').fadeIn(1400, function() { d.resolve() }).promise();
};

$.when(first())
.done(second());

哪里出错了?

附注我知道,我可以在动画调用中使用“完整”设置,但是我有很多带有大条件列表的关闭动画,使用“完整”设置将使代码不可读。

最佳答案

.done(second()) 调用 second 并将其返回值传递给 done,就像foo(bar()) 调用 bar 并将其结果传递给 foo。您只想传递函数引用,因此请省略 ():

$.when(first())
.done(second);
// No () ---^

您也可以在 first() 上使用 then,不需要 $.when 除非您要组合并行 Promise:

first().then(second);

如果你有第三个,你可以将其链接到末尾,并且它将等待 second 完成,因为 second 返回一个 promise :

first().then(second).then(third);

关于javascript - JQuery when().done() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42622596/

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