Отделение функций обратного вызова успеха от вызовов Ajax jQuery
При получении данных с сервера с использованием jQuery ajax обычной практикой является определение успеха функция обратного вызова в блоке .ajax(). Это тесно связывает обработку обратного вызова с вызовом AJAX, ограничивая гибкость и возможность повторного использования.
Чтобы определить обратный вызов за пределами блока .ajax(), обычно объявляется переменная для хранения возвращаемых данных. Однако рекомендуется более современный подход с использованием отложенных объектов.
Начиная с jQuery 1.5, отложенные объекты предлагают лучший способ обработки асинхронных операций, таких как вызовы AJAX. Вот как этого можно добиться:
function getData() { return $.ajax({ url : 'example.com', type: 'GET' }); } function handleData(data /* , textStatus, jqXHR */ ) { alert(data); //do some stuff } getData().done(handleData);
Этот подход отделяет обработку обратного вызова от вызова AJAX, позволяя с легкостью выполнять несколько обратных вызовов, обработку ошибок и синхронизацию асинхронных событий.
Например :
// Timer for demo purposes, resolves itself after 5 seconds var timer = $.Deferred(); setTimeout(timer.resolve, 5000); // Get data using AJAX and attach done and error handlers var ajax = getData().done(handleData).fail(error); // Wait for both AJAX and timer to finish before continuing $.when(timer, ajax).done(function() { // Both AJAX and 5s timer have finished }); // Additional callbacks can be added even after AJAX call finishes ajax.done(function(data) { //Do some stuff with data });
Это демонстрирует возможности отложенных объектов, обеспечивающие больший контроль и гибкость асинхронных операций в приложениях jQuery.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3