【发布时间】:2020-12-05 21:44:24
【问题描述】:
我知道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");
}
【问题讨论】:
-
await只有在你await承诺时才会做任何有用的事情。因为setTimeout()没有返回一个promise(它返回一个timerID),你的await在这里什么都不做。您可以将setTimeout()包装在一个小函数中,该函数返回一个在计时器触发时解析的承诺,并改用该包装器。这仍然不是真正意义上的同步,但函数执行会在内部暂停。
标签: node.js asynchronous promise async-await