I"m using JQuery v2.0.0

I'm trying to understand the deferred objects and I got an unexpected result. The fail() was fired even though there's no visible or known error here.

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

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

Thanks...

有帮助吗?

解决方案

You must pass your callbacks as functions:

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

Currently, you're attempting to register the undefined result of immediately calling alert('fail') as your .fail handler.

Although you didn't say so, you will be seeing both the success and fail alerts appearing, which should provide a hint that you did something wrong ;-)

其他提示

Instead of passing a function reference to the done and fail functions you are invoking them

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

$.when(foo1())
    .done(function () {
    alert('success')
})
    .fail(function () {
    alert('fail')
})
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top