http://jsfiddle.net/f4hmL/235/
function showData() {
alert("boop!");
}
function method1() {
var dfd = $.Deferred();
setTimeout(dfd.resolve(), 10000);
return dfd.promise();
}
function method2() {
var dfd = $.Deferred();
setTimeout(dfd.resolve(), 6000);
return dfd.promise();
}
$.when(method1(), method2()).then(showData);
我希望仅在两个延迟对象解析时才看到显示“boop”,但我立即看到了它。有可能实现这一目标吗? jQuery 的“when”方法是正确使用的函数吗?
最佳答案
您没有将正确的内容传递给setTimeout()
。这不起作用,因为您立即调用 dfd.resolve()
并将结果传递给此行中的 setTimeout()
:
setTimeout(dfd.resolve(), 10000);
相反,你需要这样的东西:
setTimeout(function() {dfd.resolve()}, 10000);
在超时触发之前不会调用解析。
关于javascript - 是否可以使用 jQuery 的 .when 而不使用 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877722/