如何在foreach中注册承诺并解决所有问题?

时间:2019-01-07 19:25:37

标签: javascript foreach promise

我对诺言和foreach感到困惑。我想在一个foreach寄存器内承诺,并在解决所有承诺后执行一些代码。

我已经尝试过async / await,但是并不能解决我的问题,因为每个调用函数都必须是异步的,因此我相信它将以promise的方式解决

//原始代码。

async function (rotamed) {

console.log("Before.")

clientes.forEach(c => {
        fc_paciente(rotamed,c)
        fc_servico(rotamed,c)
        especialidades.forEach(esp => {
            fc_profissional(rotamed,c,esp)
        })
    })

    console.log("After.")

}

尝试以承诺解决:

async function (rotamed) {
console.log("Before.")
let promises = []
clientes.forEach(c => {
                    promises.push(new Promise((resolve,reject) => {
                        fc_paciente(rotamed,c)
                    }))
})
console.log(promises)

Promise.all(promises).then((x) => console.log("After"))

}

每个调用函数fc_paciente,fc_servico和fc_profissional必须是异步的,当所有函数都解析后,我将调用console.log(“ After”)。

1 个答案:

答案 0 :(得分:0)

fc_pacientes必须使用resolve()和

返回一个Promise
clientes.forEach(c => {
                        promises.push(new Promise((resolve,reject) => {
                            fc_paciente(rotamed,c).then(resolve).catch(reject)
                        }))

感谢评论。