Javascript 如何从嵌套承诺中获取最终承诺链中的数据

Javascript 如何从嵌套承诺中获取最终承诺链中的数据,javascript,async-await,Javascript,Async Await,所以我调用函数fetchTaskLeads。在里面,我回报了一系列的承诺。但是这个承诺数组,因为每个承诺都有嵌套的承诺数组,所以我想从中获取数据 问题是,我的最后一个有未定义的。然后为我的parsedLeadsWithContacts阻塞了。为什么会这样 const test = fetchTaskLeads(leads) const fetchTaskLeads = (leads) => { if (!isEmpty(leads)) { const parsedLeads

所以我调用函数
fetchTaskLeads
。在里面,我回报了一系列的承诺。但是这个承诺数组,因为每个承诺都有嵌套的承诺数组,所以我想从中获取数据

问题是,我的最后一个
未定义的
。然后
为我的
parsedLeadsWithContacts阻塞了
。为什么会这样

const test = fetchTaskLeads(leads)

const fetchTaskLeads = (leads) => {
  if (!isEmpty(leads)) {
    const parsedLeads = []

    return Promise.all(leads.map((l) => db.collection('leads').doc(l).get()))
      .then((fetchedLeads) => {
        parsedLeads = fetchedLeads.map((l) => ({ leadId: l.id, ...l.data() }))

        return Promise.all(parsedLeads.map((pl) => fetchTaskContacts([pl.contact.cardId])))
      })
      .then((parsedLeadsWithContacts) =>
        parsedLeads.map((pl, index) => ({ leadId: pl.leadId, ...parsedLeadsWithContacts[index][0] })),
      )
  }
  return []
}

我认为最后一部分应该是:

。。。
.然后((ParsedLeadWithContacts)=>{
//添加return关键字,并用大括号重写以查看发生了什么:
返回parsedLeads.map((pl,index)=>({
leadId:pl.leadId,
…ParsedLeadWithContacts[index][0]
}))/,并去掉结尾的逗号
})

我能看到的第一件事是,
parsedLeads
应该是
let
,因为您要将其分配给WinterIsComing的注释,所以不会返回上一个
中的任何内容。然后()
-因此解析值将始终是
未定义的
@RandyCasburn不
parsedLeads.map
返回数组?它应该-但它不是。