Découplage des fonctions de rappel de réussite des appels jQuery Ajax
Lors de la récupération de données à partir 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 telles que 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é.
Par 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3