Dans la programmation asynchrone, comme avec les appels AJAX, la variable renvoyée par la fonction n'est pas immédiatement disponible car l'appel lui-même l'est pas exécuté immédiatement. Dans le cas des appels AJAX, l'appel est effectué de manière asynchrone, ce qui signifie qu'il s'exécute en arrière-plan pendant que le reste du code continue de s'exécuter.
Le problème auquel vous êtes confronté est que la fonction get_data dans le code fourni essaie pour renvoyer directement le résultat de l’appel AJAX. Cependant, comme l'appel est asynchrone, la fonction ne peut pas attendre le résultat avant de revenir.
Pour résoudre ce problème, la fonction get_data doit être modifiée pour utiliser un rappel fonction. Une fonction de rappel est une fonction qui est transmise à une autre fonction en tant qu'argument et est exécutée plus tard, une fois la première fonction terminée.
Dans le code révisé :
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } }
Pour appeler la fonction get_data avec un rappel :
get_data(data, destination, function(test) { notice(test); });
Dans cet exemple, une fonction de rappel anonyme est utilisé pour gérer le résultat de l’appel AJAX. Le résultat de l'appel sera transmis à la fonction de notification.
En utilisant un rappel, la fonction get_data peut lancer l'appel AJAX et revenir immédiatement, tandis que la fonction de rappel sera exécutée plus tard lorsque le résultat sera disponible.
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!