【问题标题】:Why does JS stop execution of the main thread when there is a while loop in an async function of promise? [duplicate]为什么在promise的异步函数中有while循环时JS会停止执行主线程? [复制]
【发布时间】:2019-12-06 05:07:29
【问题描述】:

为什么JS在执行一个带有while循环的异步函数后停止执行其余代码?还有我该如何解决?

我正在做一个更复杂的事情,但我认为这段代码足以解决这个问题。

async function foo(){
    while(true){}
}
foo();
console.log("stuff");

我希望它能够控制台日志“东西”,但整个程序只是停止执行。

【问题讨论】:

  • while(true){} 是无限循环,线程挂起,不是异步导致的问题
  • async 关键字不会改变非异步代码的工作方式。
  • 但是有没有办法在异步函数中等待直到发生某些事情而不停止其余代码?
  • 当然,await...?
  • 我的意思是等待事件发生。

标签: javascript asynchronous while-loop


【解决方案1】:

为什么有while循环时JS会停止执行主线程...

它不会停止执行。它执行while循环不定式

...在异步函数中?

没关系。正如你所指出的,JS 是单线程的,所以没有并发。

我该如何解决?

不要创建无限循环。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多