gpt4 book ai didi

javascript - jQuery 或 JavaScript 中的双重延迟

转载 作者:行者123 更新时间:2023-11-30 13:31:41 25 4
gpt4 key购买 nike

有没有办法延迟 JavaScript 函数的调用,直到满足两个条件?

我有一个 slideUp() 动画和一个 .get() 函数同时开始,但其中任何一个都可能先完成。我希望在两者都完成时调用一个函数。

最佳答案

您只需要跟踪所有相关信息的计数器或(我的首选方法)标志。

var slideDone, getDone;

$("#foo").slideUp(function() {
slideDone = true;
nextThing();
});
$.get({
// ...
success: function() {
getDone = true;
nextThing();
}
});

function nextThing() {
if (slideDone && getDone) {
// Do the next thing
}
}

现在,显然我上面的两个条件是非常人为的,但我发现大多数时候当我的实际工作中出现这种情况时,我有实际信息可以用于检查,所以不要求助于人为条件.

或者一个计数器:

var counter = 0;

++counter;
$("#foo").slideUp(function() {
nextThing();
});
++counter;
$.get({
// ...
success: function() {
nextThing();
}
});

function nextThing() {
if (--counter === 0) {
// Do the next thing
}
}

对于习惯于多线程编程的人来说,这看起来像是一个竞争条件(如果 slideUp 在我们开始 get 之前完成怎么办? ?),但它不是浏览器上的 JavaScript 中的一个,它是单线程的(禁止使用 web workers ,它使用的语法无论如何都不适用于上述内容)。

如果您发现这种情况经常出现,您当然可以始终将逻辑(不是有很多,而是......)隔离到一个对象中并重用它。

关于javascript - jQuery 或 JavaScript 中的双重延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6556734/

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