正确使用异步 JS 以确保函数调用等待先前的函数完成(解析?)
Proper use of async JS to ensure function calls wait for previous functions to complete (resolve?)
尝试学习正确的 async/await JavaScript 到 运行 序列函数,而序列中的早期函数将被延迟(使用 setTimeout 模拟)。我没有得到预期的结果(仍然得到“第一”、“第二”、“这应该 运行 第一?”- 见代码)。
我错过了什么?我对此有错误的想法吗?
提前致谢!
const zeroFunction = () => {
setTimeout(() => {
return new Promise((resolve) => {
console.log("This should run first?");
resolve();
});
}, 2000)}
const firstFunction = () => {
return new Promise((resolve) => {
console.log("first");
resolve();
})
}
const secondFunction = () => {
return new Promise((resolve) => {
console.log("second");
resolve();
})
}
async function fnAsync() {
await zeroFunction();
await firstFunction();
secondFunction();
}
fnAsync();
zeroFunction
当前正在隐式返回 undefined
,而不是 Promise。反转 setTimeout
和 Promise
构造函数的包装,它应该按预期工作。
const zeroFunction = () => {
return new Promise((resolve) => {
setTimeout(() => {
console.log("This should run first?")
resolve()
}, 2000)
})
}
const firstFunction = () => {
return new Promise((resolve) => {
console.log("first")
resolve()
})
}
const secondFunction = () => {
return new Promise((resolve) => {
console.log("second")
resolve()
})
}
async function fnAsync() {
await zeroFunction()
await firstFunction()
secondFunction()
}
fnAsync()
尝试学习正确的 async/await JavaScript 到 运行 序列函数,而序列中的早期函数将被延迟(使用 setTimeout 模拟)。我没有得到预期的结果(仍然得到“第一”、“第二”、“这应该 运行 第一?”- 见代码)。
我错过了什么?我对此有错误的想法吗?
提前致谢!
const zeroFunction = () => {
setTimeout(() => {
return new Promise((resolve) => {
console.log("This should run first?");
resolve();
});
}, 2000)}
const firstFunction = () => {
return new Promise((resolve) => {
console.log("first");
resolve();
})
}
const secondFunction = () => {
return new Promise((resolve) => {
console.log("second");
resolve();
})
}
async function fnAsync() {
await zeroFunction();
await firstFunction();
secondFunction();
}
fnAsync();
zeroFunction
当前正在隐式返回 undefined
,而不是 Promise。反转 setTimeout
和 Promise
构造函数的包装,它应该按预期工作。
const zeroFunction = () => {
return new Promise((resolve) => {
setTimeout(() => {
console.log("This should run first?")
resolve()
}, 2000)
})
}
const firstFunction = () => {
return new Promise((resolve) => {
console.log("first")
resolve()
})
}
const secondFunction = () => {
return new Promise((resolve) => {
console.log("second")
resolve()
})
}
async function fnAsync() {
await zeroFunction()
await firstFunction()
secondFunction()
}
fnAsync()