[vue,elementUI]多选循环执行,如果是异常就要提示用户,是否继续执行其它选中的,这个该怎么处理啊?

页面有一个可以多选的列表,如图所示:
[vue,elementUI]多选循环执行,如果是异常就要提示用户,是否继续执行其它选中的,这个该怎么处理啊?
选中的数据,要循环调用后台的方法,每调用一次后端, 就对结果进行判断,这个该怎么catch异常啊,被迫写前端的后端程序员在线求助。。。
这是调用地方的代码:

// 选中多个凭证 重新生成

this.vouchers.forEach((item, index) => {

array.push(this.reCreateVoucherMethod(url, item, index).then(res=>{

if (res.status != 200) {

$this.reCreateFailed.push(item.voucherCode);

}

}));

})

Promise.all(array).then(async (result)=>{

this.$notify({

title: '提示',

message: '000000000',

type: 'info',

duration: 0

});

})

这是被调用的代码:

reCreateVoucherMethod: async function (url, voucher, index) {

return new Promise(async (resolve, reject) => {

debugger

const res = await this.$http.post(url, null, {

params: {

busiSys: voucher.busiSysType,

busiScen: voucher.busiScenario,

busiId: voucher.busiId,

voucherId: voucher.voucherId

}

});

console.log(res, index);

resolve({

res:res,

index:index

});

reject({

res:res,

index:index

});

})

}

补充:已解决,下方是这部分全部的代码:

data() {

return {

vouchers: [],

voucherIndex: 0

}

},

// 新加--重新生成凭证  前台循环生成 所选的全部生成完提示成功 中间有报错就提示是否继续=============================================

reCreateVoucher() {

// 判断是否勾选数据

this.vouchers = this.$refs.voucherRef.selection;

if (this.vouchers.length == 0) {

this.$message.warning('请选择凭证数据!');

return;

}

// 重新生成动作

this.$confirm('此操作将重新生成选中的业务凭证, 是否继续?', '提示', {

confirmButtonText: '确定',

cancelButtonText: '取消',

dangerouslyUseHTMLString: true,

type: 'warning'

}).then(() => {

this.fnLoading = true;

const url = '/joys-rest/joys-acc-engine/voucher/reCreate/byId';

this.reCreateVoucherMethod(url);

}).catch(() => {

});

},

// 新加

reCreateVoucherMethod: function (url) {

this.$http.post(url, null, {

params: {

busiSys: this.vouchers[this.voucherIndex].busiSysType,

busiScen: this.vouchers[this.voucherIndex].busiScenario,

busiId: this.vouchers[this.voucherIndex].busiId,

voucherId: this.vouchers[this.voucherIndex].voucherId

}

}).then(res => {

debugger

//请求成功

if (res.status == 200) {

if (this.voucherIndex == this.vouchers.length - 1){

this.$message.success('所选凭证重新生成执行完毕!');

this.fnLoading = false;

this.voucherIndex = 0;

return;

}

this.voucherIndex += 1;

this.reCreateVoucherMethod(url)

}

}).catch(err => {

if (err.body.message != '') {

//请求失败提示

this.$confirm(this.vouchers[this.voucherIndex].voucherCode + '号凭证生成失败,是否继续执行其他', '提示', {

confirmButtonText: '确认',

cancelButtonText: '取消',

type: 'warning'

}).then(() => {

//确认继续请求

if (this.voucherIndex == this.vouchers.length - 1){

this.$message.success('所选凭证重新生成执行完毕!');

this.fnLoading = false;

this.voucherIndex = 0;

return;

}

this.voucherIndex += 1;

this.reCreateVoucherMethod(url)

})

}

});

},


回答:

递归,成功后再请求,
data里面新增变量i,初始值0,记录当前参数位置;
request(){

  this.post(url,this.vouchers[this.i],res =>{

//请求成功

if(status == 200){

if(this.i==arr.length-1) return

this.i+=1;

this.request()

}else{

//请求失败提示

this.$confirm('生成失败,是否继续执行其他','提示',{

confirmButtonText:'确认',

cancelButtonText:'取消',

type:'warning'

})

.then(()=>{

//确认继续请求

if(this.i==arr.length-1) return

this.i+=1;

this.request()

})

.catch(err =>{})

}

})

}

以上是 [vue,elementUI]多选循环执行,如果是异常就要提示用户,是否继续执行其它选中的,这个该怎么处理啊? 的全部内容, 来源链接: utcz.com/p/935524.html

回到顶部