Maison >interface Web >js tutoriel >Comment accéder à la valeur résolue d'une chaîne de promesses en JavaScript ?
Comprendre le chaînage des promesses et l'accès aux valeurs
Lorsque vous travaillez avec des promesses dans des frameworks JavaScript comme Angular, vous pouvez rencontrer des fonctions asynchrones qui renvoient des promesses, comme l'exemple de la documentation $q d'Angular :
promiseB = promiseA.then(function(result) { return result + 1; });
Alors que la documentation indique que "promiseB sera résolu immédiatement après la résolution de promiseA... avec le résultat de promiseA incrémenté de 1", on ne sait peut-être pas comment cela fonctionne.
La clé pour comprendre cela est de reconnaître que la fonction then dans promiseA renvoie une nouvelle promesse, promiseB. Cette nouvelle promesse est résolue immédiatement après la résolution de promiseA, et sa valeur est déterminée par la valeur de retour de la fonction de réussite dans promiseA.
Dans ce cas, la fonction de réussite renvoie "résultat 1", donc promiseB se résoudra avec la valeur du résultat incrémentée de 1. Par conséquent, pour accéder à cette valeur, vous pouvez procéder comme suit :
promiseB.then(function(result) { // Here you can use the result of promiseB });
Dans les versions JavaScript modernes (ES7 et supérieures), vous pouvez utiliser le Syntaxe async/await pour obtenir la même fonctionnalité :
async function doSomething() { let result = await functionThatReturnsPromiseA(); return result + 1; }
Dans ce cas, wait déballe le résultat de promiseA et l'assigne directement à la variable de résultat, vous permettant de travailler avec la valeur sans accéder à l'objet de promesse .
Notez que async/await ne peut être utilisé que dans les fonctions asynchrones, qui renvoient toujours des promesses. Par conséquent, si vous souhaitez accéder à la valeur de retour d'une fonction asynchrone, vous devez utiliser wait dans un autre contexte asynchrone.
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!