gpt4 book ai didi

javascript - setTimeout() 代码完成后同步执行代码的简单方法

转载 作者:行者123 更新时间:2023-12-04 16:19:37 25 4
gpt4 key购买 nike

我需要一种简单的方法来等待 setTimeout 代码执行完毕,然后运行 ​​setTimeout 之后的代码。现在包含 setTimout 的循环后代码在循环/setTimout 完成执行之前执行。

for(let i = 0; i < 5; i++) {
setTimeout(function(){
console.log(i);
}, i*1000);
}
console.log("loop/timeout is done executing");

最佳答案

setTimeout根据定义,它不是同步的 - 无论您使用什么来解决问题,都必须是异步的,没有办法解决这个问题。

实现类似目标的最佳方法是使用 Promise相反,调用 Promise.all在一系列创建的 promise 上:

(async () => {
await Promise.all(Array.from(
{ length: 5 },
(_, i) => new Promise(res => setTimeout(() => {
console.log(i);
res();
}, i * 1000))
));
console.log("loop/timeout is done executing");
})();

尽管await正在等待 Promise,而 Promise 不是同步的,如果您希望代码看起来 平坦,那么您可以获得最终的 console.log在与主功能 block 相同的缩进级别上,这可能是要走的路。

关于javascript - setTimeout() 代码完成后同步执行代码的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918932/

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