- 此问题在此处已有答案**:
Why does nodejs stop execution of while true loop inside async function(3个答案)
21小时前关门了。
我在TS操场上有一个示例代码代表了我的问题。在一个异步函数中,我在等待承诺后记录结果,但只有承诺内的代码运行,没有承诺外的日志。有人能解释一下这个问题吗?
下面是代码:
const asyncFnc = async () => {
let result = false;
await new Promise(resolve => {
setTimeout(() => {
// This log worked
console.log('waited 5s');
result = true;
}, 5000);
});
// This log did not worked
console.log(result);
}
asyncFnc();
结果是:
2条答案
按热度按时间wwwo4jvm1#
await
使父函数休眠,直到右手侧的承诺确定(即,解决或拒绝)。你的承诺从不解析或拒绝(也就是说,你不调用
resolve
,不使用第二个参数,也不抛出异常)。因此父函数将永远休眠。
编写此语句的惯用方法是避免在更大的作用域中设置变量,而只是使用值进行解析。
thtygnil2#
您需要在超时时调用
resolve()