gpt4 book ai didi

jquery - 使用 jQuery 延迟链接异步函数不会等待第一个函数完成

转载 作者:行者123 更新时间:2023-12-01 07:45:29 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery (2.1) $.Deferred 使用 then 将函数链接在一起。

我已经通读了文档,并且非常确定我在某个地方犯了一个愚蠢的错误,但我无法让函数 second 等待 first 完成。

function first() {
let deferred = $.Deferred();
setTimeout(function() { // Any async function.
$('ul').append('<li>First</li>');
deferred.resolve();
}, 500);
return deferred.promise();
}

function second() {
let deferred = $.Deferred();
$('ul').append('<li>Second</li>');
deferred.resolve();
return deferred.promise();
}

$(function() {
$.when(first()).done().then(second());
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul>
</ul>

实际上,我想继续链接(因此也是第二个中的 promise )。

JSFiddle:https://jsfiddle.net/jdb1991/n3aory8c/

如何才能使其正常工作?

最佳答案

删除 then() 回调中 second 函数上的方括号 ()。否则,您将直接执行 second 函数,而不是在 Promise 解析时执行。

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

<强> Working example.

关于jquery - 使用 jQuery 延迟链接异步函数不会等待第一个函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38957620/

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