Я новичок в JS, и мне трудно рефакторинг своего кода, я знаю, что это не правильный способ написать вложенное обещание.и я хочу реорганизовать его правильно, но у меня возникают ошибки при каждой попытке.я запутался, потому что некоторые вызовы зависят от предыдущего, поэтому я не уверен, как правильно его структурировать
это мой оригинальный вложенный код:
this.props.actionHandler.createDivisionList(this.state.divisionQnAListName).then(listData => {
console.log(listData, "in list creation");
//createListFields
this.props.actionHandler.createListFields(listData.data.Title).then(res=>{
//addFieldsToView (
console.log(res, "after list field creation");
this.props.actionHandler.addFieldsToView(listData.data.Title).then(r => {
this.props.actionHandler.createSharePointGroup(this.state.divisionName).then(groupInfo => {
console.log(groupInfo, "in group creation");
//add users to group
this.props.actionHandler.addUsersToSPGroup(groupInfo.data.Title,userwithIds).then(afterAdd => {
//break list permission
this.props.actionHandler.breakListPermission(this.state.divisionQnAListName).then(afterBreak => {
//addGroup to list
this.props.actionHandler.addGroupToList(this.state.divisionQnAListName,faqAdminGroup[0].Id,fullControlPermission).then(admin => {
this.props.actionHandler.addGroupToList(this.state.divisionQnAListName,groupInfo.data.Id,contributePermission).then(last => {
this.props.actionHandler.saveMasterItemtoSPList(this.props.masterListName,formData).then(res => {
//if success pass success else pass fail to the container
console.log(res, "after saving!");
//this.props.onSubmission(res);
});
});
});
});
});
});
});
});
});
и это моя попыткая попытался присвоить ответ переменной, которая будет передана другим вызовам, которым нужны эти данные.но я получаю неопределенный
let groupData;
this.props.actionHandler.createDivisionList(this.state.divisionQnAListName)
.then(lst => {
console.log(lst, "in list creation");
return this.props.actionHandler.createListFields(lst.data.Title)
.then(()=> this.props.actionHandler.addFieldsToView(lst.data.Title));
})
.then(() => {
return this.props.actionHandler.createSharePointGroup(this.state.divisionName)
.then(grp => {
console.log(grp, "group created");
groupData = grp;
return this.props.actionHandler.addUsersToSPGroup(grp.data.Title,userwithIds)
})
.then(() => this.props.actionHandler.breakListPermission(this.state.divisionQnAListName))
.then(groupData=> {
return Promise.all([
this.props.actionHandler.addGroupToList(this.state.divisionQnAListName,faqAdminGroup[0].Id,fullControlPermission),
this.props.actionHandler.addGroupToList(this.state.divisionQnAListName,groupData.data.Id,contributePermission)
])
.then(() => this.props.actionHandler.saveMasterItemtoSPList(this.props.masterListName,formData)).then(res => {
console.log(res, "after saving!");
return this.props.onSubmission(res);
})
})
})