Dans votre code, la fonction getJSON est une fonction asynchrone qui utilise la syntaxe async/await. Comme l'indique correctement la question, chaque fonction asynchrone renvoie un objet Promise. L'opérateur wait est ensuite utilisé pour suspendre l'exécution de la fonction jusqu'à ce que la promesse soit résolue ou rejetée.
Cependant, vous ne pouvez pas enregistrer le résultat de la fonction asynchrone directement avec console.log(getJSON()). En effet, wait ne suspend que l'exécution de la fonction et permet à la promesse de se résoudre avec le résultat. Cependant, la fonction elle-même renvoie toujours la promesse sous-jacente, et non le résultat non enveloppé.
Pour accéder au résultat de la promesse, vous devez soit utiliser la méthode then(), comme vous l'avez démontré, soit utiliser à nouveau wait dans un autre fonction asynchrone. Dans votre cas, getJSON().then(json => console.log(json)) enregistre le résultat { foo: 'bar' } car il enchaîne un gestionnaire then sur la promesse renvoyée par getJSON.
Comme mentionné dans la réponse, ce comportement est fondamental pour le modèle Promise. Les promesses représentent des opérations asynchrones qui peuvent être résolues à un moment futur non spécifié. La méthode then() vous permet de spécifier les actions à entreprendre lorsque la promesse est résolue.
En comprenant que les fonctions asynchrones renvoient toujours des promesses, même lorsque vous utilisez wait, vous pouvez gérer et consommer correctement le code asynchrone dans vos applications .
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!