试图理解异步等待

Bor*_*ald 0 javascript async-await

我试图理解为什么这段代码不像我期望的那样表现:

async function test() {
  await setTimeout(() => {
    console.log('done')
  }, 1000)

  console.log('it finished');
}


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

这首先打印it finished,然后打印done。这段代码不应该在执行之前等待超时完成console.log('it finished');还是我误解了什么?

Que*_*tin 5

你只能有用await一个promise

setTimeout返回一个超时 ID(一个数字),您可以传递给clearTimeout它来取消它。它不返回承诺。

你可以setTimeout用一个承诺来包装......

async function test() {
  await new Promise( resolve => setTimeout(() => {
    console.log('done');
    resolve("done");
  }, 1000));

  console.log('it finished');
}


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