首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个承诺调用之后的代码不运行?

为什么这个承诺调用之后的代码不运行?
EN

Stack Overflow用户
提问于 2015-11-03 01:02:06
回答 2查看 101关注 0票数 0

当我尝试在将一个函数交给一个承诺在函数完成时运行的代码之后添加任何代码,它都不会运行。看这个例子。

代码语言:javascript
运行
复制
(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之后的下一行。这不就是使用承诺的全部意义吗?“承诺解决”警报运行良好,但“承诺后的代码”从未出现。我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-03 01:10:45

在这个块之后有一个不必要的()

代码语言:javascript
运行
复制
$.when(promise).then(function(xml) {
    alert("Promise resolved.");
  })();

改为:

代码语言:javascript
运行
复制
$.when(promise).then(function(xml) {
    alert("Promise resolved.");
  });

其中一条注释指出,您需要在代码开始时使用$。这不是真的。您只是在这里创建一个闭包,这是完全可以接受的语法。但是,我建议以;作为脚本的前缀,以便如果它包含在任何其他闭包之后,则确保它们被关闭。在JavaScript中使用闭包时,这通常是很好的做法。

票数 2
EN

Stack Overflow用户

发布于 2015-11-03 01:10:49

代码语言: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.");
 })();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33489753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档