【发布时间】:2021-12-31 13:33:46
【问题描述】:
据我了解,async 函数是异步的。所以它不会等待所以调用者不会等待它完成它只是立即返回一个将在稍后解决的承诺。除非您使用 await 关键字。
我在 nodejs 中运行这段代码,结果出乎意料
async function foo() {
console.log('start')
let sum = 0;
for(let i = 0; i < 1000000000; i++) {
sum += 0.00001 * i;
}
console.log('finish')
return sum;
}
function main() {
foo()
console.log('this should run immediately:')
}
main()
这是我得到的结果
start
finish
this should run immediately:
这不是我期望发生的,我希望最后一条消息立即打印出来,并作为“开始”和“结束”之前的第一条消息。我不明白什么?
【问题讨论】:
-
“我希望最后一条消息立即打印” - 您希望最后一条
console.log语句在之前执行foo函数返回?async函数同步执行直到遇到第一个await语句。
标签: node.js asynchronous async-await