据我理解,承诺是可以resolve()或reject()的东西,但令我惊讶的是,在调用resolve或reject后,承诺中的代码仍然会继续执行。
我认为resolve或reject是一种异步友好的退出或返回版本,它将停止所有立即执行的函数。
有人能解释一下为什么在调用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");
});
注:该内容为一个HTML标签,其中包含一个带有链接的段落,在新窗口中打开网页编辑器jsbin.com/sukacinayu/1/edit,并可查看控制台输出。
resolve()
不是JS的控制语句,也不会像魔法般具有return
的效果,它只是一个函数调用,是的,在它之后执行会继续进行。 - user663031