当我尝试在将一个函数交给一个承诺在函数完成时运行的代码之后添加任何代码,它都不会运行。看这个例子。
(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
之后的下一行。这不就是使用承诺的全部意义吗?“承诺解决”警报运行良好,但“承诺后的代码”从未出现。我遗漏了什么?
发布于 2015-11-03 01:10:45
在这个块之后有一个不必要的()
:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
})();
改为:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
});
其中一条注释指出,您需要在代码开始时使用$
。这不是真的。您只是在这里创建一个闭包,这是完全可以接受的语法。但是,我建议以;
作为脚本的前缀,以便如果它包含在任何其他闭包之后,则确保它们被关闭。在JavaScript中使用闭包时,这通常是很好的做法。
发布于 2015-11-03 01:10:49
(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.");
})();
https://stackoverflow.com/questions/33489753
复制相似问题