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!