多个等待并行运行



我正在尝试学习async/await和promises,无法在串行中运行多个async函数。

function firstFunction () {
return new Promise((resolve, reject) => {
setTimeout(() => console.log('first'), 2000)
resolve()
})
}
function secondFunction () {
return new Promise((resolve, reject) => {
setTimeout(() => console.log('second'), 1000)
resolve()
})
}
async function main() {
await firstFunction()
await secondFunction()
}
main()

输出是

second
first

因为有等待firstFunction(),我希望的承诺firstFunction()完成前secondFunction()。

谁能指出为什么他们并行运行,如何使他们一个接一个地运行?(在节点v18.3.0上运行)

您需要移动resolve()内部调用setTimeout()函数。下面是固定的代码:

function firstFunction () {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('first');
resolve();
}, 2000);
});
}
function secondFunction () {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('second');
resolve();
}, 1000);
})
}
async function main() {
await firstFunction()
await secondFunction()
}
main()

相关内容

  • 没有找到相关文章

最新更新