[英]Why doesn't the code after this promise invocation run?
当我在将函数交给完成后要运行的承诺后尝试添加任何代码时,它将永远不会运行。 请参阅此示例。
(function() {
var url = //some url that I know works
var promise = $.get(url);
$.when(promise).then(function(xml) {
alert("Promise resolved.");
})();
//This code doesn't run!
alert("Code after promise.");
})();
我认为$.when
之后,执行立即转到下一行。 这不是使用诺言的全部意义吗? “已解决承诺”警报运行良好,但是“承诺后代码”从未出现。 我想念什么?
在此块之后,您有一个不必要的()
:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
})();
更改为:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
});
其中一条注释指出,在代码开头需要$
。 这不是真的。 您只是在这里创建一个闭包,这是完全可以接受的语法。 但是,我建议您在脚本前加上;
因此,如果将其包含在其他任何闭包之后,则可以确保将其关闭。 在JavaScript中使用闭包时,通常这只是一个好习惯。
(function(){
var url = //some url that I know works
var promise = $.get(url);
//********************************
$.when(promise).then(function(xml){
alert("Promise resolved.");
}); // take this () off
//********************************
//This code will run first
alert("Code after promise.");
})();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.