Maison > interface Web > js tutoriel > Pourquoi les fonctions Async/Await renvoient-elles toujours une promesse ?

Pourquoi les fonctions Async/Await renvoient-elles toujours une promesse ?

Susan Sarandon
Libérer: 2024-11-29 04:48:17
original
526 Les gens l'ont consulté

Why Do Async/Await Functions Always Return a Promise?

Pourquoi async/await renvoie-t-il toujours une promesse ?

L'utilisation de la fonctionnalité async/await peut être déroutante au début, surtout lorsqu'il s'agit de gérer la promesse renvoyée par la fonction asynchrone. Examinons le comportement mis en évidence dans le code fourni :

<br>const getJSON = async () => {<br>const request = () => new Promise((resolve, rejet) => (</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)
Copier après la connexion

));

const json = wait request();
return json;
}

Lors de l'exécution de getJSON(), la fonction renvoie un objet Promise. Cela se produit parce que chaque fonction asynchrone renvoie une promesse sous le capot. Le mot-clé wait opère sur cette promesse, suspendant l'exécution de la fonction jusqu'à ce que la promesse soit résolue ou rejetée.

Dans l'exemple, wait attend que request() soit résolu. Cependant, il ne déroule pas automatiquement la promesse. Vous devez gérer explicitement la promesse renvoyée en utilisant wait ou .then().

En utilisant .then(), comme indiqué dans le code fourni :

<br>getJSON ().then(json => console.log(json)); // prints { foo: 'bar' }<br>

invoque la fonction de rappel lorsque la promesse est résolue et transmet le résultat en tant que paramètre json. Cette approche permet d'accéder à la valeur résolue dans le rappel.

D'un autre côté, la journalisation directe du résultat de la fonction asynchrone à l'aide de console.log(getJSON()) renvoie un objet Promise car il ne se déroule pas la Promesse. Le modèle Promise garantit que vous ne pouvez accéder au résultat d'une promesse qu'à partir de la promesse elle-même ou en utilisant une méthode de déballage explicite comme .then().

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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal