对于数组中的每个对象,如何解析按顺序检索数据库数据并填充下拉列表的承诺?

问题描述 投票:0回答:1

我有一个名为

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()
内部的函数没有运行,所以我不确定是否需要再次调用它们。我如何按顺序运行这个承诺和以下函数?我想在转到下一个项目之前完成第一个项目的这些步骤。我将不胜感激任何建议,谢谢!

javascript promise arrow-functions sequential method-chaining
1个回答
0
投票
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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.