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”。但是存在一个问题,并且由于某种原因它不起作用。
答案 0 :(得分:3)
您放在$.when
中的匿名函数永远不会执行,因此永远不会返回承诺。
如果您实际执行该函数,则返回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>