gpt4 book ai didi

JavaScript 异步函数不是非阻塞的

转载 作者:行者123 更新时间:2023-11-28 03:04:57 35 4
gpt4 key购买 nike

由于 async 函数是非阻塞的,我预计下面代码中的 asyncfunc 不会阻塞并且 console.log(a) 打印零。

var a = 0;
const asyncfunc = async () => {
for (let i = 0; i < 1000000000; i++) {}
a = 1;

return 2;
};

const asyncmain = async () => {
a = asyncfunc();
console.log(a);

return true;
};

asyncmain();

但是当我执行时,asyncfunc中的所有代码都会先运行,然后写入控制台日志。函数首先在异步函数处被阻塞!

预计:0实际: promise { 2 }

我无法理解这个结果。帮助我理解这个结果!

ps我在 node.js v10.15.3 上运行了这段代码

最佳答案

如果您想使用异步函数的结果,则必须使用 await 子句指定您希望等待它们使用它。

var a = 0;
const asyncfunc = async () => {
for (let i = 0; i < 1000000000; i++) {}
a = 1;

return 2;
};

const asyncmain = async () => {
a = await asyncfunc();
console.log(a);

return true;
};

asyncmain();

我建议您阅读此文article充分理解异步函数的行为。

关于JavaScript 异步函数不是非阻塞的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693781/

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