首页 > 解决方案 > 构建并返回一组返回的 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()

标签: javascriptpromisereturn

解决方案


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));

推荐阅读