Javascript 当promise的异步函数中存在while循环时,为什么JS会停止主线程的执行?

Javascript 当promise的异步函数中存在while循环时,为什么JS会停止主线程的执行?,javascript,asynchronous,while-loop,Javascript,Asynchronous,While Loop,为什么JS在执行包含while循环的异步函数后停止执行其余代码?还有,我该如何修复它 我正在做一件更复杂的事情,但我认为这段代码对于这个问题来说已经足够好了 async function foo(){ while(true){} } foo(); console.log("stuff"); 我希望它能够控制台日志“stuff”,但是整个程序只是停止执行 为什么JS在有while循环时停止主线程的执行 它不会停止执行。它无限地执行while循环 。。。在异步函数中 那没关系。正如您所指出

为什么JS在执行包含while循环的异步函数后停止执行其余代码?还有,我该如何修复它

我正在做一件更复杂的事情,但我认为这段代码对于这个问题来说已经足够好了

async function foo(){
    while(true){}
}
foo();
console.log("stuff");
我希望它能够控制台日志“stuff”,但是整个程序只是停止执行

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

它不会停止执行。它无限地执行while循环

。。。在异步函数中

那没关系。正如您所指出的,JS是单线程的,因此没有并发性

我怎么修理它


不要创建无限循环。

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