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
返回数组?它应该-但它不是。