当我尝试在将函数交给承诺运行完成后添加任何代码时,它永远不会运行。见这个例子。
row_number
我认为执行立即转到(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.");
})();
之后的下一行。这不是使用承诺的全部意义吗? “承诺已解决”警报没有问题,但“承诺后的守则”从未出现过。我错过了什么?
答案 0 :(得分:2)
此块之后您有一个不必要的()
:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
})();
将其更改为:
$.when(promise).then(function(xml) {
alert("Promise resolved.");
});
其中一条评论表明您需要在代码的开头加$
。这不是真的。你只是在这里创建一个闭包,这是完全可以接受的语法。但是,我建议为脚本添加;
前缀,这样如果它包含在任何其他闭包之后,它会确保它们被关闭。在JavaScript中使用闭包时,这通常是一种很好的做法。
答案 1 :(得分:0)
(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.");
})();