据我了解,promise 是可以解析()或拒绝()的东西,但我惊讶地发现promise 中的代码在调用resolve 或reject 后继续执行。
我认为resolve或reject是exit或return的异步友好版本,它将停止所有立即函数的执行。
有人可以解释为什么以下示例有时在解析调用后显示 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 http://jsbin.com/sukacinayu/1/edit?js,console,output
JavaScript 的概念是“运行至完成” https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#run-to-completion。除非抛出错误,否则函数将执行直到return
语句或其结束。函数外部的其他代码不能干扰它(除非再次抛出错误)。
如果你想resolve()
要退出初始化函数,您必须在其前面添加return
:
return new Promise(function(resolve, reject) {
return resolve();
console.log("Not doing more stuff after a return statement");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)