如果我们不解决 Promisified setTimeout 会发生什么?

问题描述 投票:0回答:1

所以我有一个函数需要每隔一秒运行一次,所以我使用下面的代码,但如果我不解决 setTimeout 中的承诺,它就不起作用,而且我无法理解为什么会这样?

async function loop() {
  console.log("print")
  await new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve();
    }, 1000);
  });
  loop()
}
loop()

它工作正常,每秒记录一次“打印”,但是当我从 setTimeout 中删除解析时,它不再工作,只是在记录“打印”一次后停止。

由于 setTimeouts 一般不会失败,所以我认为无论我是否解决承诺,它都应该有效,但在删除解决方案时它不起作用。

javascript promise settimeout
1个回答
0
投票

您的函数将

await
解决您的承诺,即承诺状态更改为已履行。

如果承诺永远无法兑现,

await
将永远等待。

来自官方文档

await运算符用于等待

Promise
并获取其履行值。它只能在异步函数内部或在模块的顶层使用。

© www.soinside.com 2019 - 2024. All rights reserved.