Maison >interface Web >js tutoriel >Comment puis-je gérer efficacement les résolutions de promesses en JavaScript asynchrone ?

Comment puis-je gérer efficacement les résolutions de promesses en JavaScript asynchrone ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-23 11:47:33804parcourir

How Can I Effectively Handle Promise Resolutions in Asynchronous JavaScript?

Promesses et exécution 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 { } espace réservé au lieu de la valeur attendue.

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.

Gestion des résolutions de promesse

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"
});

Comprendre le comportement de résolution de la promesse

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.

Détails de la résolution de la promesse

  1. Une valeur renvoyée par la fonction .then devient la valeur résolue de cette promesse.
  2. Si la fonction .then renvoie une promesse, la valeur résolue de cette promesse enchaînée est transmise au suivant .puis.

Exemples de démonstration

  1. Retour de valeur :

    initPromise()
      .then(function(result) {
     console.log(result); // "initResolve"
     return "normalReturn";
      })
      .then(function(result) {
     console.log(result); // "normalReturn"
      });
  2. 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!

Déclaration:
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