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)
));
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!