问题描述:
通过请求接口queryDemandExpress,返回数组idList:['233','66','676','33'];
接口2:syncExpressNo,传参为demandId,
要求是:循环数组idList中的数组将每一项作为接口syncExpressNo的参数,循环发送请求
大致意思为:
idList.forEach(item => {
syncExpressNo({demandId:item})
})
问题描述:
通过请求接口queryDemandExpress,返回数组idList:['233','66','676','33'];
接口2:syncExpressNo,传参为demandId,
要求是:循环数组idList中的数组将每一项作为接口syncExpressNo的参数,循环发送请求
大致意思为:
idList.forEach(item => {
syncExpressNo({demandId:item})
})
let queue=idList.forEach(item => {
return new Promise(resolve=>{
syncExpressNo({demandId:item}).then(res=>{
resolve(res)
)
})
})
Promise.all(queue).then(result=>{
//TODO
...
})
已解决,仅供参考
目前存在问题:promise.all一个调用失败的话会全部失败、、,待修正
queryExpress(context, data) {
return syncExpressNo({ demandIdList: data });
},
async batch_expressNo({ state, commit, dispatch }) {
commit('SET_PERCENT', 0);
const params = {
dtStart: state.searchFormData.dtStart,
dtEnd: state.searchFormData.dtEnd,
expressNameEmpty: true,
expressNoEmpty: true,
shopCodeList: [
'TMALL',
],
};
try {
const { data } = await queryDemandExpress(params);
const list = data.map(({ demandId }) => demandId);
let failCount = 0;
let idx = 0;
const incFailCount = () => (failCount++);
await Promise.all(list.map(id => (async () => {
const { code } = await dispatch('queryExpress', [id]).catch(incFailCount);
if (code !== 0) {
incFailCount();
}
idx += 1;
const num = (100 / list.length) * (idx);
commit('SET_PERCENT', parseInt(num, 10));
})()));
Message.error(`总数量为:${list.length},获取失败数量为:${failCount}`);
} finally {
commit('SET_PERCENT', 100);
dispatch('getList');
}
},
9 回答1.7k 阅读✓ 已解决
6 回答1.5k 阅读
3 回答1.4k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答1k 阅读
3 回答1.3k 阅读✓ 已解决
详细描述下你的问题吧