为什么此 promise 调用后的代码没有 运行?
Why doesn't the code after this promise invocation run?
当我在将函数交给 运行 完成后尝试添加任何代码时,它永远不会 运行s。请参阅此示例。
(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
之后马上执行到下一行了。这不是使用 promises 的全部意义吗? "Promise resolved" 警报正常,但 "Code after promise" 从未出现。我错过了什么?
您在此块之后有一个不必要的 ()
:
$.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.");
})();
当我在将函数交给 运行 完成后尝试添加任何代码时,它永远不会 运行s。请参阅此示例。
(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
之后马上执行到下一行了。这不是使用 promises 的全部意义吗? "Promise resolved" 警报正常,但 "Code after promise" 从未出现。我错过了什么?
您在此块之后有一个不必要的 ()
:
$.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.");
})();