gpt4 book ai didi

Javascript - 等待使用 setTimeout 的函数真正结束

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

让我用一个虚拟的情况来解释我的问题。让我们考虑以下代码:

var counter = 0;    
function increase(){
if(counter < 10){
counter++;
setTimeout(increase, 100);
}
}

现在,想法是在 increase() 函数完成其工作后显示计数器值。让我们试试这个:

increase();
alert(counter);

您可能知道,它不起作用。 alert() 调用显示 1,而不是 10。我想在函数完全完成其递增工作后显示 counter 的值。

有没有简单的方法可以解决我的问题?

[注意] 使用回调函数不是一种选择,因为我不希望 increase() 知道我想在它完成后做某事(出于模块化目的)。所以,我想避免这样的事情:

function increaseForTheKings(f){
if(counter < 10){
counter++;
setTimeout(function(){ increase(f); }, 100);
} else {
f();
}
}

最佳答案

执行此操作的标准方法是使用 promises .

var counter = 0;
function increase(){
var d = jQuery.Deferred();
var doIncrease = function() {
if(counter < 10){
counter++;
setTimeout(doIncrease, 100);
} else {
d.resolve();
}
};
doIncrease();
return d.promise();
};

increase().then(function() {
alert(counter);
});

关于Javascript - 等待使用 setTimeout 的函数真正结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625439/

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