试图了解异步等待

时间:2020-10-29 11:48:17

标签: javascript async-await

我试图理解为什么这段代码不符合我的预期:

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

  console.log('it finished');
}


test();

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

1 个答案:

答案 0 :(得分:5)

您只能有用地awaitpromise

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

您可以将setTimeout包裹在诺言中……

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

  console.log('it finished');
}


test();