我正在嘗試學習 async/await 和 Promise,但無法串行運行多個異步函式。
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 中運行)
uj5u.com熱心網友回復:
您需要在setTimeout()函式內移動您的resolve()呼叫。這是固定代碼:
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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496778.html
標籤:javascript 异步 异步等待
上一篇:鏈接不會改變顏色并擺脫文本裝飾
