据我所知,promise是可以解决()或拒绝()但我很惊讶发现在调用解析或拒绝后,promise中的代码继续执行.
我认为解决或拒绝是退出或返回的异步友好版本,这将停止所有立即执行功能.
有人可以解释为什么以下示例有时会在解析调用后显示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");
});
解决方法:
JavaScript具有“run to completion”的概念.除非抛出错误,否则执行函数直到返回语句或其结束.函数外部的其他代码不能干扰它(除非再次抛出错误).
如果您希望resolve()退出初始化函数,则必须通过返回前缀:
return new Promise(function(resolve, reject) {
return resolve();
console.log("Not doing more stuff after a return statement");
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。