【问题标题】:How to always trigger jQuery then() callback?如何始终触发 jQuery then() 回调?
【发布时间】: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() 的第二个参数)将被调用,而成功处理程序将被遗忘。
  • 听起来不错!感谢您的回复!

标签: jquery promise


【解决方案1】:

你可以使用 .always() 而不是 .then() ,不管怎样都会执行。

【讨论】:

  • 漂亮!感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多