wait setTimeout 不是同步等待

Muh*_*fil 9 asynchronous node.js promise async-await

我知道这setTimeout是一个异步运行的 API,我想同步运行它。使用async/await如下所示应该bla bla首先打印,但我bla先打印。

  async function testing(){
    console.log("testing function has been triggered");
      await setTimeout(function () {
        console.log("bla bla")
      }, 4200)
    console.log("bla");
  }
Run Code Online (Sandbox Code Playgroud)

You*_*saf 13

setTimeout不返回 a Promise,所以你不能await这样做。

您可以包装setTimeout一个函数,该函数返回 a ,Promise一旦计时器到期,该函数就会被满足。你可以使用await这个包装函数。

function createCustomTimeout(seconds) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('bla bla');
      resolve();
    }, seconds * 1000);
  });
}

async function testing() {
  console.log('testing function has been triggered');
  await createCustomTimeout(4);
  console.log('bla');
}

testing();
Run Code Online (Sandbox Code Playgroud)