Maison > interface Web > js tutoriel > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-18 19:18:29
original
709 Les gens l'ont consulté

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);
Copier après la connexion

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
});
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!