【发布时间】:2013-03-16 17:46:27
【问题描述】:
我有几个函数返回延迟对象的情况。我将这些延迟对象传递给$.when(),并在所有延迟对象都解决后执行then() 回调。
$.when(func1(), func2(), func3()).then(function() {
alert('Hello World!');
});
有时这三个函数都没有返回任何延迟对象,在这种情况下,then() 回调永远不会执行。有没有一种干净的方法来确保始终调用 then() 回调?
【问题讨论】:
-
如果传递给
$.when()的值都不是延迟对象,then()仍将调用其成功处理程序(例如,$.when("a", "b", "c").then(function() { alert("foo"); });将提醒foo)。你指的是它的失败处理程序吗? -
@FrédéricHamidi 有趣的一点!所以为了总是执行成功回调,我想我们也可以试试 $.when("a", deferred_object_1, deferred_object_2).then(callback).
-
如果
deferred_object_1和deferred_object_2都在稍后解决,那么可以。但是,一旦其中一个被拒绝,失败处理程序(then()的第二个参数)将被调用,而成功处理程序将被遗忘。 -
听起来不错!感谢您的回复!