gpt4 book ai didi

javascript - 代码执行的同步延迟

转载 作者:行者123 更新时间:2023-12-03 21:30:20 24 4
gpt4 key购买 nike

我有一段代码需要在一段延迟(例如 5000 毫秒)后执行。当前我正在使用 setTimeout,但它是异步的,我希望执行等待其返回。我尝试过使用以下内容:

function pauseComp(ms) 
{
var curr = new Date().getTime();
ms += curr;
while (curr < ms) {
curr = new Date().getTime();
}
}

但是我想延迟的代码是使用raphaeljs绘制一些对象,并且显示一点也不流畅。我正在尝试使用 doTimeout 插件。我只需要延迟一次,因为延迟和要延迟的代码都在循环中。我不需要 id,所以我不使用它。例如:

for(i; i<5; i++){ $.doTimeout(5000,function(){
alert('hi'); return false;}, true);}

这会在给出第一个 Hi 之前等待 5 秒,然后连续的循环迭代在第一个之后立即显示警报。我想要它做的是等待 5 秒,再次发出警报,等待,然后发出警报,依此类推。

如有任何提示/建议,我们将不胜感激!

最佳答案

已接受答案的变体,与此答案一样好。

此外,我同意优先使用 setTimeout 和异步函数调用的注意事项,但有时,例如,在构建测试时,您只需要一个同步等待命令...

function wait(ms) {
var start = Date.now(),
now = start;
while (now - start < ms) {
now = Date.now();
}
}

如果你想要以秒为单位,请在 while 检查时将 start ms 除以 1000...

===编辑===

我注意到我的答案已经浮到了顶部,但它确实不应该是顶部答案。这是作为替代方案编写的,以防您无法在代码中使用 async/await 或者您正在等待很短的时间(例如一两秒用于测试) )。

最重要的答案应该指出,异步/等待模式是一种更好的方法,并且将显着使用更少的能源和 CPU 周期。

例如,请参阅下面@michaelolof 的回答......

const wait = (msec) => new Promise((resolve, _) => {
setTimeout(resolve, msec));
});

(async () => {
console.log("Start...")
await wait(5000);
console.log("...End")
})();

关于javascript - 代码执行的同步延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921895/

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