使用setTimeout

时间:2018-07-11 00:58:30

标签: javascript ecmascript-6 async-await

我是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]

为什么这段代码无法同步?

谢谢。

1 个答案:

答案 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();