Javascript 如何异步并行等待多个承诺?[语法错误:wait是保留字]

Javascript 如何异步并行等待多个承诺?[语法错误:wait是保留字],javascript,asynchronous,promise,async-await,Javascript,Asynchronous,Promise,Async Await,我正在查询一些数据,这些数据基本上是书籍和相关作者的数据库。每个图书记录都有一个authorId字段,我必须单独查询该字段以获取相关的作者数据 以下是我如何首先获得所有书籍: let books = await axios.get("https://api.airtable.com/v0/appGI25cdNsGR2Igq/Books?&view=Main%20View") let authorIds = books.data.records.map( ( book) => boo

我正在查询一些数据,这些数据基本上是书籍和相关作者的数据库。每个图书记录都有一个
authorId
字段,我必须单独查询该字段以获取相关的作者数据

以下是我如何首先获得所有书籍:

let books = await axios.get("https://api.airtable.com/v0/appGI25cdNsGR2Igq/Books?&view=Main%20View")
let authorIds = books.data.records.map( ( book) => book.fields.Author[0] )
这很有效,我得到了这些作者ID:

[ 'recNLaQrmpQzfkOZ1',
  'recmDfVxRp01x85F9',
  'recKQqdJ9a2pHnF2z',
  'recKMiDhdCUxfdPSY',
  'rec67WoUDFjFMrw44' ]
现在我想将此数据发送到一个
getAuthors
函数,如下所示:

const getAuthors = async (authorIds) => {
  authorIds.map( id => await Promise.all([
    return axios.get(`https://api.airtable.com/v0/appGI25cdNsGR2Igq/Authors/${id}`
  ])))
}
此函数本应获取我的相关作者数据,但我得到一个错误:

Syntax Error: await is a reserved word
…在这一行:
authorIds.map(id=>wait Promise.all([…


我做错了什么?有没有办法解决这个问题?

您已将
wait
放在
map
回调函数中,而不是声明为
async
的回调函数中。您需要使用

async function getAuthors(authorIds) {
  await Promise.all(authorIds.map(id =>
    axios.get(`https://api.airtable.com/v0/appGI25cdNsGR2Igq/Authors/${id}`)
  ));
}

虽然最好将
await
替换为
return

您已将
await
放置在
map
回调函数中,而不是声明为
async
的回调函数中。您需要使用

async function getAuthors(authorIds) {
  await Promise.all(authorIds.map(id =>
    axios.get(`https://api.airtable.com/v0/appGI25cdNsGR2Igq/Authors/${id}`)
  ));
}

虽然最好用
return

替换
await
,我的babel设置运行良好,但我使用的是next.js,它预配置为transfilation等。另外,对书籍的第一个请求运行良好,这意味着异步不是问题。更新了获取错误的行:
authorIds.map(id=>await Promise.all([
为什么需要async/await+承诺?这是管理异步代码的两种不同模式。@booster2oo因为没有承诺就不能使用
async
/
await
?它们一点也不不同,只是
然后
+回调的语法糖。提示:只能在函数中使用
等待
de>async
My babel安装程序运行良好,我正在使用为transpilation等预配置的next.js。另外,对书籍的第一个请求运行良好,这意味着异步不是问题。更新了我收到错误的行:
authorIds.map(id=>Wait Promise.all([
为什么需要async/await+承诺?这是管理异步代码的两种不同模式。@booster2oo因为没有承诺就不能使用
async
/
await
?它们一点也不不同,只是
然后
+回调的语法糖。提示:只能在函数中使用
等待
de>异步