[英]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.