我对诺言和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”)。
答案 0 :(得分:0)
fc_pacientes必须使用resolve()和
返回一个Promiseclientes.forEach(c => {
promises.push(new Promise((resolve,reject) => {
fc_paciente(rotamed,c).then(resolve).catch(reject)
}))
感谢评论。