gpt4 book ai didi

javascript - 在 Nodejs 中处理异步

转载 作者:搜寻专家 更新时间:2023-11-01 00:34:51 24 4
gpt4 key购买 nike

大家好,我在解决 Node.js 中的异步问题时遇到了一些麻烦

let isDone = false;
setTimeOut(() => { isDone = true }, 1000)

let i = 0;
while(!isDone) {
console.log(i++)
}

问题是,isDone 最终变为 true,但 while 永远保持不变,为什么?

最佳答案

首先,setTimeout,小写o

其次,正如 James@ 评论所说,这是一个阻塞问题,因为 JS 是单线程的,并且在它有一个空闲的执行周期之前不会恢复异步代码( promise 、超时、间隔)。为了解决这个问题,您可以将代码段的后半部分(while 循环)包装在一个间隔内。这将使 JS 引擎有机会在 while 的每次迭代中检查准备好的异步代码

let isDone = false;
setTimeout(() => {
isDone = true;
}, 1000);

let i = 0;
let interval = setInterval(() => {
if (isDone)
clearInterval(interval);
else
console.log(i++);
}, 0);

关于javascript - 在 Nodejs 中处理异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56136602/

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