Maison > interface Web > js tutoriel > Pourquoi les promesses asynchrones affichent-elles initialement un état en attente ?

Pourquoi les promesses asynchrones affichent-elles initialement un état en attente ?

Linda Hamilton
Libérer: 2024-12-12 11:11:09
original
514 Les gens l'ont consulté

Why Do Asynchronous Promises Initially Show a Pending State?

Pourquoi les promesses asynchrones affichent initialement les états en attente

Votre code implique une fonction asynchrone utilisant une promesse, mais lorsque vous essayez d'accéder au jeton à l'intérieur de la promesse, vous êtes rencontrer une "Promesse { }" au lieu d'un jeton résolu.

Résolution de la promesse et en attente États

Une promesse représente une opération dont la réalisation peut prendre du temps, et elle fournit un moyen de gérer le résultat de l'opération soit lorsqu'elle est résolue (achèvement réussi) ou rejetée (échec). Initialement, une promesse est en attente jusqu'à ce que son opération soit terminée.

Chaînage des promesses : résolution différée

Dans votre code, vous renvoyez une promesse de google.login. Lorsque vous essayez d'accéder au jeton immédiatement, la promesse est toujours en attente ; cela n'est pas encore résolu. Cela signifie que vous recevrez l'état en attente sous la forme Promise { }.

Capturer les résultats d'une promesse

Pour obtenir la valeur résolue d'une promesse, vous devez utiliser ses méthodes .then ou .catch. Ces méthodes fournissent des gestionnaires qui s'exécuteront lorsque la promesse sera résolue ou rejetée, respectivement. En enchaînant les gestionnaires .then, vous pouvez effectuer des actions basées sur la valeur résolue de la promesse.

Exemple : Capture des valeurs de promesse

let AuthUser = function(data) {
  return google.login(data.username, data.password).then(token => { return token } )
}

let userToken = AuthUser(data)
console.log(userToken) // Promise { <pending> }

userToken.then(function(result) {
   console.log(result) // "Some User token"
})
Copier après la connexion

Dans cet exemple, nous ajoutons un gestionnaire .then à la promesse renvoyée par AuthUser. Le gestionnaire s'exécutera lorsque la promesse sera résolue et recevra la valeur résolue en tant que paramètre. L'instruction console.log à l'intérieur du .then imprimera ensuite le jeton utilisateur réel.

Conclusion

Les promesses offrent une manière structurée de gérer les opérations asynchrones. Pour accéder à la valeur résolue d'une promesse, il est nécessaire de la chaîner avec les gestionnaires .then ou .catch. Ce n'est qu'une fois la promesse résolue que la valeur résolue sera disponible pour votre code.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal