Внедрение объектов Deferred в функции XHR

Еще одна замечательная особенность объекта Deferred состоит в том, что он обеспечивает очевидный способ отмены асинхронного действия до его полного завершения. Ниже приводится доработанная версия нашего предыдущего примера, демонстрирующая возможность отменить уже выполняющийся запрос, а также – «внедрение» объекта Deferred в обработчики load и error:


Fun with Deferreds!



(body)
XHR request in progress.


You have about 3 seconds to cancel it.
(button onclick="javascript:request.cancel()")Cancel(/button)
(/body)


Если запустить этот пример, в консоли Firebug можно наблюдать следующий вывод:
xhrGet just fired. Waiting on callbacks or errbacks now...
Load response is: Hello
Executing the callback chain now...
Callback 1 says that the result is Hello
Callback 2 says that the result is Hello

А щелчок на кнопке «Cancel» (отмена) приведет к появлению следующих результатов:
xhrGet just fired. Waiting on callbacks or errbacks now...
Press the button to cancel...
Error: xhr cancelled dojoType=cancel message=xhr cancelleddojo.xd.js (line 20)
Error! Error: xhr cancelled dojoType=cancel message=xhr cancelled
Executing the errback chain now...
Errback 1 says that the result is Error: xhr cancelled dojoType=cancel
message=xhr
cancelled
Errback 2 says that the result is Error: xhr cancelled dojoType=cancel
message=xhr
cancelled.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
DeferredList
JSON
OpenAjax Hub
Вызов удаленных процедур
Загрузка файлов с помощью IFRAME