我有一个名为
projects
的对象数组。每个项目都有一个project_id
。我需要使用 project_id
从数据库检索分配给项目的所有成员,检查每个成员是否获得批准,然后使用项目标题填充下拉选择。
由于我需要等待 GET 请求在其他任务完成之前完成,因此我将请求包装在 Promise 中。不幸的是,我不能使用
async await
,因为我们团队使用 Promise 作为标准。对于数组中的每个 project
对象,我需要执行此承诺并将其与 .then()
链接以检查批准状态并填充下拉列表。
这是我到目前为止所拥有的:
projectArray.map(project => () => { // map each project in array to a new promise
getMembers(project.project_id)
.then(members => { // pass in array of member objects returned from getMembers()
if (members.every(member => member.approved)) {
// populate dropdown with projects
}
}
})
function getMembers(project_id) {
return new Promise((resolve, reject) => {
// send AJAX GET request
return resolve(memberData)
}
}
.map()
内部的函数没有运行,所以我不确定是否需要再次调用它们。我如何按顺序运行这个承诺和以下函数?我想在转到下一个项目之前完成第一个项目的这些步骤。我将不胜感激任何建议,谢谢!
projectArray.map(async (project) => // map each project in array to a new promise
const members = await getMembers(project.project_id)
// pass in array of member objects returned from getMembers()
if (members.every((member) => member.approved)) {
// populate dropdown with projects
}
})
function getMembers(project_id) {
return new Promise((resolve, reject) => {
// send AJAX GET request
return resolve(memberData)
}
}