没有ajax调用可以使用jQuery的.when吗?

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); 

在超时触发之前不会调用解析。