为什么在$ .when()中没有错误时会触发fail()?

时间:2013-11-20 14:08:48

标签: jquery jquery-deferred deferred .when

我正在使用JQuery v2.0.0

我正在尝试理解延迟对象,但我得到了意想不到的结果。即使此处没有可见或已知的错误,也会触发fail()。

function foo1() { alert('testing'); }

$.when(foo1())
  .done(alert('success'))
  .fail(alert('fail'))

...谢谢

2 个答案:

答案 0 :(得分:8)

您必须将回调作为函数传递:

$.when(foo1())
    .done(function() {
        alert('success');
    }).fail(function() {
        alert('fail');
    });

目前,您正在尝试立即注册undefined结果调用alert('fail')作为.fail处理程序。

虽然你没有这么说,但你会看到success fail警告出现,这应该提示你做错了什么; - )

答案 1 :(得分:3)

而不是将函数引用传递给您正在调用它们的donefail函数

function foo1() {
    alert('testing');
}

$.when(foo1())
    .done(function () {
    alert('success')
})
    .fail(function () {
    alert('fail')
})