gpt4 book ai didi

javascript - 等待第一次等待完成,再等待第二次等待-Async/await

转载 作者:行者123 更新时间:2023-12-03 12:35:34 25 4
gpt4 key购买 nike

我正在尝试使第二个功能等待第一个功能完成。在下面的示例中,我无法实现。在探讨异步/等待时,据说执行顺序是顺序的。但是,这里似乎并非如此。

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

在此示例中,由于函数2占用的时间更少,因此在 'Bye'之前打印 'Hi'。但是我试图确保第一个函数何时完成其执行,然后应该转到第二个函数。

最佳答案

这是因为在某种意义上说您定义的函数不能返回await,因为它们不会返回可以解决的 promise 。相反,它们可以立即完成/立即“解决”。

function one() {
return new Promise(resolve => {
setTimeout(() => {
console.log('Hi')
resolve();
}, 5000)
})
}

function two() {
return new Promise(resolve => {
setTimeout(() => {
console.log('Bye')
resolve();
}, 2000)
})
}

async function doAll() {
await one();
await two();
}
async function demo() {
await doAll();
}

demo()

关于javascript - 等待第一次等待完成,再等待第二次等待-Async/await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57954742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com