在实现自动分组时,首先要先建立出小组,才能向小组中添加成员,所以要等小组建立成功,在异步操作完成后才执行添加成员操作,此时可以使用callback。
// index.js页面
// 自动生成小组
handleAutoGroup=()=>{
const {totalNumber}=this.state;
const {dispatch,groupId} = this.props;
console.log(groupId);
const divisions = [];
for (let i = totalNumber; i >= 1; i--) {
const divisionName = `组${i}`;
console.log(divisionName);
divisions.push({
groupId:groupId,
divisionName:divisionName
})
console.log(divisions);
}
dispatch({
type: 'ClassManagementModel/autoDivision',
payload: {
data: {
groupId,
divisions
},
pagination: {
current: 1,
size: 8,
}
},
callback: this.handleAutoDivisionMemberShow,
});
this.closeModal()
}
// model页面
* autoDivision({payload,callback}, {call, put}) {
console.log(payload);
const {data:{divisions,groupId}}=payload
console.log(divisions);
console.log(groupId);
while (divisions.length > 0) {
const division = divisions.pop();
console.log(division);
const response = yield call(ClassManagementService.addGroupDivision, division);
console.log(response)
if (response.code !== 0){
message.success('数据有误');
break;
}
}
console.log(11111);
yield put({
type: 'fetchDivision',
payload:
{
groupId:groupId,
...payload.pagination,
callback: () => {
callback();
},
}
})