Node.js API在多个.map函数中的承诺
我正试图用一些JIRA API数据在Node.JS中构建一个表 我的问题是,我需要遍历多个.map函数,在这些函数中,我需要进行多个API调用,但承诺不会等到这些API调用完成后再将数据发送到前端 现在我有一些类似于:Node.js API在多个.map函数中的承诺,node.js,Node.js,我正试图用一些JIRA API数据在Node.JS中构建一个表 我的问题是,我需要遍历多个.map函数,在这些函数中,我需要进行多个API调用,但承诺不会等到这些API调用完成后再将数据发送到前端 现在我有一些类似于: await Promise.all(epics.map(async (epic) =>{ return Promise.all(sprintsTable.map((sprints, key) => { return new Promise((r
await Promise.all(epics.map(async (epic) =>{
return Promise.all(sprintsTable.map((sprints, key) => {
return new Promise((resolve,reject) =>{
jira.epic.getIssuesForEpic({
boardId: board_id,
epicId: epic.id,
jql: 'sprint='+sprints.id
}, function (error, issues){
var task = {
title: 'TASK',
data: issues,
};
resolve(task);
});
});
}));
})).then((response) => {
});
现在,by server.js在实际执行api调用之前发送一个200响应,这样就不会等待所有的.map和api调用执行。哪里的数据发送到前端太早了?还不清楚什么在等什么?您确实意识到您正在并行调用所有的
jira.epic.getIssuesForEpic)
调用,对吗?这不会对它们进行排序。它将它们全部发送出去,然后等待它们全部完成。我还建议您从第一个.map()
回调中删除async
,因为它不是必需的。同样奇怪的是,您在顶级Promise.all()上同时使用wait
和.then()
。通常,您会使用其中一个。而且,您还需要对jira.epic.getIssuesForEpic()调用进行错误处理。您当前正在忽略回调的error
参数。我们需要查看实际将200响应发送到前端的周围代码。这可能就是问题所在。