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

fle*_*sod 2 jquery deferred jquery-deferred .when

我正在使用JQuery v2.0.0

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

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

$.when(foo1())
  .done(alert('success'))
  .fail(alert('fail'))
Run Code Online (Sandbox Code Playgroud)

谢谢...

Aln*_*tak 8

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

$.when(foo1())
    .done(function() {
        alert('success');
    }).fail(function() {
        alert('fail');
    });
Run Code Online (Sandbox Code Playgroud)

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

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