我的问题很奇怪,如标题所述。这是代码:
案例1:
var first = $.ajax({ // about 500ms request
url: myUrl
success: function() { console.log(1); }
});
var second = $.ajax({ // about 200 ms request
url: myUrl
success: function() { console.log(2); }
});
$.when(first, second).done(function() { console.log(3); });
记录2,1,3。一切都很好,就是我想要的。
案例2:
var first = $.ajax({ // about 500ms request
url: myUrl
success: function() { console.log(1); }
});
var second = $.ajax({ // about 200 ms request
url: myUrl
success: function() { console.log(2); }
});
function logthree() {
console.log(3);
}
$.when(first, second).done(logthree());
记录3,2,1,这是一个问题。 logthree()函数应该只执行第一次和第二次解析。
为什么会这样?如何在没有任何问题的情况下使用案例2?
注意:如果第一个和第二个是函数并且它们返回$ .ajax,则会发生同样的事情。
注意:如果第一个和第二个都是$ .get。
,就会发生同样的事情答案 0 :(得分:0)
试试这个..
`$ .when(第一,第二).done(logthree);
答案 1 :(得分:0)
更改为:
$.when(first, second).done(logthree);
您正在执行logthree()
并将返回结果传递给.done()
。您需要将函数引用传递给仅.done()
的{{1}}而不包含parens。当您添加parens时,它会指示JS解释器立即执行它。这是一个常见的错误。