我是个诺言w弱的人,试图弄清楚如何等待一堆Firebase嵌套调用完成方法。一堆我的意思是大约4。我已经读了很多关于诺言的内容,我对此感到头痛,但我仍然无法弄清。
handleReactCSV = (data) => {
// check if data is null
data.forEach(el => {
first = el.First ? el.First : null;
last = el.Last ? el.Last : null;
this.setState({
first: first,last: last,},() => {
this.setMember()
})
})
}
在这里,我循环了一堆数据,我需要this.setMember()中的所有内容来进行解析,然后再继续进行下一个forEach。
export function setMember() {
let { currentOrganization,first,last,phone,phone2,email,email2,memberSaved,anniversary,address,address2,city,zip,headOfHousehold,status,bday,profilePic } = this.state;
this.props.firebase.pushMember(this.state.currentOrganization)
.then(snap => {
return snap.key
})
.then(keyUid => {
this.props.firebase.db.ref('organization/' + currentOrganization + '/members/' + keyUid ).set(
{
first: first,//... other data
})
return keyUid
})
.then(memKey => {
this.setState({
memberKeyID: memKey,family: {[memKey]: [first,'Head of house']},() => {
this.props.firebase.getMemberCount(currentOrganization).once('value')
.then(count => {
if(count.val()) {
const countTotal = count.val() + 1;
return countTotal;
} else {
return 1;
}
})
.then(memberCount => {
this.props.firebase.setMemberCount(currentOrganization,memberCount)
.catch(err => console.error(err))
})
})
})
}
我试图做一个新的Promise并将其包装在this.setMember()上,但是解决方法不起作用。然后我读到您不能在a中放置一个解析,因为它是“自动解析”的。我该如何实现?