我需要仅在Promise.all完成后才执行promise.then(),但是首先应在解决promise的那一组之后执行firebase.database()。
const finalizarAlbum = async () => {
setVisibleMod(false);
if (nome && email && telefone) {
const id = uuid();
const promises = Promise.all(
arrayPages.map((item, index) => {
firebase
.storage()
.ref(id)
.child(listaOrdemFotos[index])
.putFile(item)
.then((res) => {
objetoPaginas.push({
ordem: index,
pagina: arrayPages[index],
url: res.downloadURL,
});
setUnidade((unidade) => unidade + 1);
})
.catch((error) => setErro(erro));
})
);
promises.then(() => {
firebase
.database()
.ref('usuarios')
.child(id)
.set({
nome,
email,
telefone,
listaOrdemFotos: objetoPaginas,
})
.then(() => console.log('Enviado'))
.catch((error) => setErro(erro));
});
}
};
您没有从.map
返回任何内容,因此您正在创建一个undefined
数组,而不是一个promise数组。更改为:
const promises = Promise.all(
arrayPages.map((item, index) => {
return firebase // <---------
.storage()
.ref(id)
.child(listaOrdemFotos[index])
.putFile(item)
.then((res) => {
objetoPaginas.push({
ordem: index,
pagina: arrayPages[index],
url: res.downloadURL,
});
setUnidade((unidade) => unidade + 1);
})
.catch((error) => setErro(erro));
})
);