Maison > interface Web > js tutoriel > Comment accéder aux valeurs de retour des fonctions asynchrones malgré le fait qu'elles soient enveloppées de promesses ?

Comment accéder aux valeurs de retour des fonctions asynchrones malgré le fait qu'elles soient enveloppées de promesses ?

DDD
Libérer: 2024-10-18 12:19:02
original
745 Les gens l'ont consulté

How to Access Return Values from Async Functions Despite Being Wrapped in Promises?

Fonctions asynchrones et valeurs de retour

Votre problème est que les fonctions asynchrones, malgré le renvoi de valeurs, semblent souvent ne pas le faire car la valeur renvoyée est enveloppé dans une promesse. Pour accéder à la valeur finale, vous avez deux options :

1. Chaînage de promesse

Vous pouvez chaîner la méthode .then() d'une promesse pour récupérer la valeur finale :

<code class="javascript">let allPosts = new Posts('https://jsonplaceholder.typicode.com/posts');

allPosts.init()
    .then(d => {
        console.log(allPosts.getPostById(4));
        // Here you can return the value as needed
    });</code>
Copier après la connexion

2. Async/Await

Au sein d'une fonction asynchrone, vous pouvez utiliser wait pour suspendre temporairement l'exécution de la fonction et attendre qu'une promesse soit résolue :

<code class="javascript">async function myFunc() {
    const postId = 4;
    await allPosts.init();

    // This is logging the correct value
    console.log('logging: ' + JSON.stringify(allPosts.getPostById(postId), null, 4));

    // Return the result using await
    return allPosts.getPostById(postId);
}

myFunc()
    .then(result => console.log(result))
    .catch(error => console.error(error));</code>
Copier après la connexion

De cette façon, vous pouvez créez une fonction qui renvoie la valeur de getPostById(id) en gérant correctement la nature asynchrone de 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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal