gpt4 book ai didi

javascript - Promise 异常行为,执行顺序

转载 作者:行者123 更新时间:2023-11-29 15:19:55 24 4
gpt4 key购买 nike

在将 Chrome 升级到 58 之前,我没有遇到任何错误。

进一步说明:我的代码在星期天运行,我不知道执行的异步性质,两天后才发现!

new Promise((s, f) => {
console.log(1);
s();
console.log(2);
})
.then(r => {console.log(3)})

console.log(4);

输出:

1

2

4

3


1- 为什么 'then' 在 console.log(2) 之后执行???

可能的答案:因为 promise 结果是在 body 返回后执行的

2- 为什么 'then' 在 console.log(4) 之后执行???

最佳答案

由于 promise 的异步性质,then 处理程序将存储在事件循环的消息队列中。只要 JavaScript 运行时的调用堆栈为空,就会处理此队列的元素。在您的场景中,console.log(4); 需要在封闭函数从调用堆栈中取出之前运行,此时 JavaScript 引擎可以开始处理消息队列中的项目(假设封闭函数是顶级函数),导致在 then 中运行代码。

关于javascript - Promise 异常行为,执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44797218/

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