簡體   English   中英

返回一個依賴於JS函數的異步調用的值

[英]Returning a value that depends on an async call from a JS function

這里的關鍵是我希望我的函數返回從另一個函數異步接收到的值。 結構如下:

const https = require('https');

function getNumPages(substr) {
    let totalPages = 0;
    console.log(`Before makeRequest ${totalPages}`); //0

    makeRequest(substr,(numPages)=>{
        console.log(`Inside callback from makeRequest${numPages}`); //79

        totalPages = numPages;
    });

    console.log(`After makeRequest${totalPages}`); //0
    return totalPages;
}

使getNumPages 返回來自makeRequest的值的最佳方法是什么。 我了解代碼的異步性質,並且返回值在makeRequest函數調用其回調之前執行。

我希望能夠使用字符串調用getNumPages,例如說getNumPages('Shakespeare'),makeRequest將調用API,獲取數據庫中莎士比亞的頁面數,然后getNumPages返回整數。 我知道在makeRequest的回調中,我有適當的頁面數,但是說我不想在那里工作,我只想從getNumPages返回它。

只是兌現承諾,這是唯一的方法。

但是...您可以使用async / await使其看起來像同步代碼,無論如何它只會在后台使用promise。 但它的外觀和行為就像您想要的(我認為)

您可以使用異步/等待語法

async function getNumPages(substr) => {
    const result = await makeRequest(substr);
    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM