首頁 > web前端 > js教程 > 儘管被 Promise 包裹著,如何存取非同步函數的回傳值?

儘管被 Promise 包裹著,如何存取非同步函數的回傳值?

DDD
發布: 2024-10-18 12:19:02
原創
745 人瀏覽過

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

非同步函數和傳回值

您的問題是,非同步函數儘管傳回值,但通常似乎不這樣做,因為傳回值被包裹在一個承諾中。要存取最終值,您有兩個選項:

1。 Promise 連結

您可以連結 Promise 的 .then() 方法來擷取最終值:

<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

在非同步函數中,你可以使用await來暫時暫停函數的執行並等待Promise解析:

<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>
登入後複製

這樣,你可以透過正確處理程式碼的非同步性質,建立一個傳回getPostById(id) 值的函數。

以上是儘管被 Promise 包裹著,如何存取非同步函數的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板