javascript - 为什么 jquery "when promise"在此代码段中不起作用?

标签 javascript jquery promise

var d1 = $.Deferred();
var variable = false;
$.when(function(){
  console.log("This should be printed(consoled) first!");
  if(variable == false){
    variable = true;
    d1.resolve();
  }else{
    d1.resolve();
  }
  return d1.promise();
}).then(function(callback){
  console.log("The variable should be true: -> " + variable);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

"$.when"中的函数应该在"then"中的函数之前执行,它应该将变量的值设置为"true"。但是有一个问题,由于某种原因它不起作用。

最佳答案

您放置在 $.when 中的匿名函数永远不会执行,因此永远不会返回 promise 。

如果你真的执行了这个函数,那么 promise 就返回了,它工作正常

var d1 = $.Deferred();
var variable = false;

$.when((function(){ // using an IIFE
  console.log("This should be printed(consoled) first!");
  if(variable == false){
    variable = true;
    d1.resolve();
  }else{
    d1.resolve();
  }
  return d1.promise();
})()).then(function(callback){
  console.log("The variable should be true: -> " + variable);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 为什么 jquery "when promise"在此代码段中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553080/

相关文章:

javascript - 如何通过控制台记录传递到此测试函数的每个参数?

Javascript 错误跟踪和 TRY 和 CATCH

javascript - 粘贴前更新剪贴板数据(不是 'paste' 事件)

javascript - 我可以拒绝 dojo/Deferred 而不会在浏览器控制台中出现错误吗?

javascript - 在服务中使用 promise 但不返回 promise

JavaScript 所见即所得的实现

javascript - 在 Android WebView 中显示 Javascript 小部件

c# - 在 DropDownFor 值更改时更改 EditorFor 的值

javascript - 更改名称 : in an object in serialize array 的值

javascript - 如何减少 Node JS 中多个异步函数的运行时间?