"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cuándo desacoplar las funciones de devolución de llamadas exitosas de las llamadas jQuery Ajax?

¿Cuándo desacoplar las funciones de devolución de llamadas exitosas de las llamadas jQuery Ajax?

Publicado el 2024-11-03
Navegar:514

When to Decouple Success Callback Functions from jQuery Ajax Calls?

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.

Declaración de liberación Este artículo se reimprime en: 1729250296 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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