Показать сообщение отдельно
  #3 (permalink)  
Старый 30.07.2014, 17:32
Новичок на форуме
Отправить личное сообщение для dmsuslov Посмотреть профиль Найти все сообщения от dmsuslov
 
Регистрация: 28.10.2007
Сообщений: 8

Посыпаю голову пеплом! Оказывается, мой пример - рабочий :-)

Просто я писал его на основе своего реального кода, намеренно упрощая, пытаясь показать самую суть. А дело было ночью, и голова уже плохо соображала

В реальном коде у меня была допущена ошибка, .done() был таким:

.done(console.log(t));


В то время, как здесь я запостил его в правильном виде:

.done(function () {console.log(t)});


И, разумеется, console.log(t) выполнялся тут же, не дожидаясь обработки событий.

А такой каскад обработчиков нужен был вот для чего. $.post()-запросов было несколько, и в .success() каждого запроса происходила обработка полученного результата. И уже по факту завершения последнего запроса вызывался окончательный обработчик .done(), который пользовался результатами работы .success() каждого запроса.

.promise() оказался ненужным. Документация (http://api.jquery.com/jquery.post/) гласит следующее:

As of jQuery 1.5, all of jQuery's Ajax methods return a superset of the XMLHTTPRequest object. This jQuery XHR object, or "jqXHR," returned by $.get() implements the Promise interface, giving it all the properties, methods, and behavior of a Promise (see Deferred object for more information).


Но всё равно большое спасибо за отзыв!
Ответить с цитированием