jQuery 1.5 добавляет «Отложенные объекты». Что они собой представляют и что именно они делают?
источник
jQuery 1.5 добавляет «Отложенные объекты». Что они собой представляют и что именно они делают?
Отложенный объект
Начиная с jQuery 1.5, объект Deferred предоставляет способ регистрации нескольких обратных вызовов в самоуправляемых очередях обратных вызовов, при необходимости вызывать очереди обратных вызовов и передавать состояние успеха или отказа любой синхронной или асинхронной функции.
Отложенные методы:
Отложено в действии:
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
И кажется, что существующие обратные вызовы метода ajax () могут быть связаны, а не объявлены в настройках:
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Рабочий пример из сообщения в блоге Эрика Хайндса : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
Начиная с jQuery 1.5, метод $ .ajax () возвращает объект jXHR, который является надмножеством объекта XMLHTTPRequest. Дополнительные сведения см. В разделе jXHR записи $ .ajax.
Из JQUERY 1.5 ВЫШЕЛ :
ОТЛОЖЕННЫЕ ОБЪЕКТЫ
Наряду с переписыванием модуля Ajax была представлена новая функция, которая также стала общедоступной: отложенные объекты . Этот API позволяет вам работать с возвращаемыми значениями, которые могут не присутствовать сразу (например, возвращаемый результат асинхронного запроса Ajax). Кроме того, он дает вам возможность подключать несколько обработчиков событий (что ранее было невозможно в Ajax API).
Кроме того, вы можете создавать свои собственные отложенные объекты, используя открытый jQuery.Deferred. Дополнительную информацию об этом API можно найти в документации по отложенному объекту .
Эрик Хайндс написал хорошее руководство по использованию отложенных запросов в jQuery 1.5 .
Вместо того, чтобы рассказывать вам, что он делает, я покажу вам, что он делает, и объясню это.
Копия связанного источника jQuery 1.5 с аннотациями, объясняющими, что он делает. Думаю, комментарии в основном правильные.
Это может быть полезно
источник
Problem solved
. Кстати, это источник 1.5beta, я думаю, что в 1.6 есть некоторые измененияПоправьте меня, если я ошибаюсь, но недавно я понял, что это, по сути, асинхронный запуск задач. Обещание - это контракт на результат, гарантирующий, что вы получите ... что-то, но без гарантии того, когда вы это получите.
источник
При работе в Javascript мы сталкиваемся с ситуацией, когда вызовы функций являются асинхронными. То есть поток функции calee (скажем, X) не ждет вызываемой асинхронной функции (скажем, Y). Типичный пример - это когда мы обращаемся к серверу для получения данных из базы данных или HTML-страницы. Если эти вызовы не были асинхронными, пользовательский интерфейс зависнет, ожидая ответа сервера. Этот асинхронный характер приводит к проблеме, когда вы хотите выполнить что-то в определенном порядке, например, вы хотите что-то напечатать после того, как Y (асинхронный) завершил выполнение или завершил выборку данных. Здесь jQuery предоставляет нам отложенный объект. По сути, jQuery позаботился обо всем стандартном коде, который мы обычно пишем для разрешения этой ситуации. Вот простой пример:
Вы можете написать свою собственную отложенную (асинхронную) функцию
Надеюсь, это помогло.
источник