我是ES6的新手,所以我学习Javascript语句。
在测试异步/等待时,我发现了一些奇怪的行为。
我这样写代码,
const test = async () => {
await setTimeout(() => {
console.log("timeout");
}, 2000);
await console.log(1);
await console.log(2);
}
test();
输出在这里
1
2
timeout
[Finished in 2.1s]
我定义了异步功能,并等待每一行进行同步。
期望的输出在这里,
timeout
1
2
[Finished in 2.1s]
为什么这段代码无法同步?
谢谢。
答案 0 :(得分:3)
这是实现所需输出的方法。您可以将setTimeout
包装在Promise
中,然后await
。
const test = async () => {
await new Promise((resolve)=>setTimeout(() => {
console.log("timeout");
resolve();
}, 2000));
console.log(1);
console.log(2);
}
test();