【发布时间】:2019-09-16 20:58:45
【问题描述】:
我试图让第二个函数等到第一个函数完成。在以下示例中,我无法实现它。在探索 async/await 时,据说执行顺序是连续的。但是,这里的情况似乎并非如此。
function one() {
setTimeout(() => {
console.log('Hi')
}, 5000)
}
function two() {
setTimeout(() => {
console.log('Bye')
}, 2000)
}
async function doAll() {
await one();
await two();
}
async function demo() {
await doAll();
}
demo()
输出
Bye
Hi
在这个例子中,由于函数二涉及的时间更少,'Bye' 在'Hi' 之前打印。但我试图确保第一个函数完成执行时,它应该转到第二个。
【问题讨论】:
-
await Promise.all([one, two])也许? -
第一个函数在第二个函数之前完成。事实上,这两个函数都几乎立即完成,但超时不会。
-
await与 Promises 一起使用。你的函数都没有返回一个。await one()毫无意义。