javascript - 构建并返回一组返回的 Promise
问题描述
我有以下函数,它基本上调用了其他三个基于 promise 的函数。承诺似乎都在起作用,但是我无法获得返回 tableData 数组的函数。
任何指针都会非常有帮助。
function getALLBooks() {
tableData = []
getAPIKey(creds)
.then(apikey => {
// console.log(apikey)
getBooks(apikey).then(books => {
// console.log(books)
books.forEach(function (value) {
// console.log(value.Guid);
getBook(apikey, value.Guid).then(book => {
// console.log(apikey)
// console.log(book)
console.log(book.Name)
tableData.push({
"name": book.Name
})
})
});
return tableData
})
})
.catch(error => {
console.log(error)
})
}
getALLBooks()
解决方案
async function getALLBooks() {
const apikey = await getAPIKey(creds);
const books = await getBooks(apikey);
const promises = books.map(book => {
return getBook(apikey, book.Guid)
});
const results = await Promise.all(promises);
return results.map(book => ({ name: book.Name }))
}
getALLBooks().then(books => console.log(books));
推荐阅读
- javascript - 通过 webgl 加载 PNG 图像并不完美
- oracle - to_date(:PARAMETER, 'DD/MM/YYYY') 和 to_date('20/11/2019', 'DD/MM/YYYY') 的性能差异
- android-studio - 从后台服务访问当前 SharedPreferences 数据
- bootstrap-4 - 如何在引导程序中添加卡片组行之间的间距
- javascript - 如何在使用 react(redux) 渲染之前设置状态
- c++ - 如何使用 GCC 编译指示启用 -Werror?
- java - 如何使用 String.format()
- ios - Xcode Interface Builder 缺少导航
- node.js - Gulp 任务覆盖前一个任务的输出
- gradle - 如何在多平台多项目 Kotlin 构建中向另一个项目的测试添加依赖项