Maison >interface Web >js tutoriel >Comment puis-je gérer efficacement les résolutions de promesses en JavaScript asynchrone ?
Les fonctions asynchrones permettent un traitement non bloquant en exécutant des tâches simultanément, renvoyant des promesses qui représentent le résultat de l'opération. Cependant, lorsqu'elles sont exécutées sans traitement approprié, les fonctions asynchrones peuvent générer une promesse {
Dans l'extrait de code fourni, la fonction AuthUser renvoie une promesse qui représente le résultat de la fonction google.login. Cependant, l'appel ultérieur à AuthUser dans userToken = AuthUser(data) aboutit à une promesse non résolue puisqu'aucun rappel n'est utilisé pour gérer sa résolution.
Pour capturer le résultat de la promesse, une méthode .then ou .catch doit être attachée à la promesse. Ces méthodes vous permettent de gérer respectivement la résolution ou le rejet de la promesse.
La modification suivante capture la valeur de la promesse userToken dans un rappel :
let userToken = AuthUser(data); userToken.then(function(result) { console.log(result); // "Some User token" });
Les promesses sont intrinsèquement orientées vers l’avant. Une fois résolu, le résultat est transmis aux gestionnaires .then ou .catch, quel que soit l'état actuel de la promesse. Le gestionnaire .then suivant recevra toujours la valeur résolue de la promesse chaînée renvoyée dans le .then précédent.
Retour de valeur :
initPromise() .then(function(result) { console.log(result); // "initResolve" return "normalReturn"; }) .then(function(result) { console.log(result); // "normalReturn" });
Chaînage de promesses :
initPromise() .then(function(result) { console.log(result); // "initResolve" return new Promise(function(resolve, reject) { setTimeout(function() { resolve("secondPromise"); }, 1000) }) }) .then(function(result) { console.log(result); // "secondPromise" });
En adhérant à ces principes, vous peut gérer efficacement les opérations asynchrones et capturer leurs valeurs résolues.
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!