gpt4 book ai didi

javascript - 为什么javascript ES6 Promises在解决后继续执行?

转载 作者:IT王子 更新时间:2023-10-29 02:49:52 24 4
gpt4 key购买 nike

据我所知,promise 是可以 resolve() 或 reject() 的东西,但我惊讶地发现 promise 中的代码在调用 resolve 或 reject 后继续执行。

我认为 resolve 或 reject 是 exit 或 return 的异步友好版本,它将停止所有立即执行的函数。

有人可以解释为什么以下示例有时会在 resolve 调用后显示 console.log 背后的想法:

var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};

call().then(function() {
console.log("resolved");
});

jsbin

最佳答案

JavaScript 有 "run to completion" 的概念.除非抛出错误,否则函数将一直执行到 return 语句或到达其结尾。函数之外的其他代码不能干扰它(除非再次抛出错误)。

如果你想让 resolve() 退出你的初始化函数,你必须在它前面加上 return:

return new Promise(function(resolve, reject) {
return resolve();
console.log("Not doing more stuff after a return statement");
});

关于javascript - 为什么javascript ES6 Promises在解决后继续执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28896280/

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