2013-11-20 2 views
2

я "использую JQuery V2.0.0

Я пытаюсь понять, отложенные объекты и я получил неожиданный результат. Нерабочее() был уволен, даже если нет видимых или известная ошибка здесь.

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

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

Благодаря ...

ответ

8

Вы должны пройти обратные вызовы в качестве функций:

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

В настоящее время, вы пытаетесь зарегистрировать undefined результат сразу вызывающего alert('fail') как ваш .fail обработчика.

Хотя вы не сказали, таким образом, вы будете видеть оба successиfail предупреждения появления, что должно обеспечить намек, что вы сделали что-то неправильно ;-)

+0

Да, я могу сказать, что я сделал что-то неправильно. :-) Один быстрый вопрос, допустим или разрешен, если я делаю это без функции «foo» -> $ .when (alert ('test')) .done (function() {}). Fail (function() {}); – fletchsod

+0

Все еще ждут 5 минут, поэтому я могу нажать на ответ на ваш вопрос. – fletchsod

+1

@fletchsod в этом конкретном случае, при вызове 'alert' непосредственно в' $ .when' приведет к вызову callback done. Это только результат возврата из выражения внутри '.when'. – Alnitak

3

Вместо передачи функции ссылки на функции done и fail вы призываете их

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

$.when(foo1()) 
    .done(function() { 
    alert('success') 
}) 
    .fail(function() { 
    alert('fail') 
}) 
Смежные вопросы