Maison  >  Article  >  interface Web  >  Quand découpler les fonctions de rappel de réussite des appels jQuery Ajax ?

Quand découpler les fonctions de rappel de réussite des appels jQuery Ajax ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-18 19:18:29711parcourir

When to Decouple Success Callback Functions from jQuery Ajax Calls?

Découplage des fonctions de rappel de réussite des appels jQuery Ajax

Lors de la récupération de données d'un serveur à l'aide de jQuery ajax, il est courant de définir le succès fonction de rappel dans le bloc .ajax(). Cela couple étroitement la gestion du rappel avec l'appel AJAX, limitant la flexibilité et la réutilisabilité.

Pour définir le rappel de réussite en dehors du bloc .ajax(), une variable pour stocker les données renvoyées est généralement déclarée. Cependant, une approche plus moderne utilisant des objets différés est recommandée.

Depuis jQuery 1.5, les objets différés offrent une meilleure façon de gérer les opérations asynchrones comme les appels AJAX. Voici comment y parvenir :

function getData() {
    return $.ajax({
        url : 'example.com',
        type: 'GET'
    });
}

function handleData(data /* , textStatus, jqXHR */ ) {
    alert(data);
    //do some stuff
}

getData().done(handleData);

Cette approche dissocie la gestion des rappels de l'appel AJAX, permettant ainsi plusieurs rappels, la gestion des erreurs et la synchronisation des événements asynchrones en toute simplicité.

Pour exemple :

// 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
});

Cela démontre la puissance des objets différés, permettant un plus grand contrôle et une plus grande flexibilité sur les opérations asynchrones dans les applications jQuery.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn