Desacoplamiento de las funciones de devolución de llamadas exitosas de las llamadas jQuery Ajax
Al recuperar datos de un servidor usando jQuery ajax, es una práctica común definir el éxito función de devolución de llamada dentro del bloque .ajax(). Esto acopla estrechamente el manejo de la devolución de llamada con la llamada AJAX, lo que limita la flexibilidad y la reutilización.
Para definir la devolución de llamada exitosa fuera del bloque .ajax(), generalmente se declara una variable para almacenar los datos devueltos. Sin embargo, se recomienda un enfoque más moderno que utilice objetos diferidos.
Desde jQuery 1.5, los objetos diferidos ofrecen una mejor manera de manejar operaciones asincrónicas como llamadas AJAX. Así es como puedes lograr esto:
function getData() { return $.ajax({ url : 'example.com', type: 'GET' }); } function handleData(data /* , textStatus, jqXHR */ ) { alert(data); //do some stuff } getData().done(handleData);
Este enfoque desacopla el manejo de la devolución de llamada de la llamada AJAX, lo que permite múltiples devoluciones de llamada, manejo de errores y sincronización de eventos asincrónicos con facilidad.
Por ejemplo :
// 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 });
Esto demuestra el poder de los objetos diferidos, lo que permite un mayor control y flexibilidad sobre las operaciones asincrónicas en aplicaciones jQuery.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3