Maison  >  Article  >  interface Web  >  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
DDDoriginal
2024-10-18 12:19:02590parcourir

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>

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>

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!

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