循环上面的数组进行数据请求,每次发送该数组中的一个元素(即第一次发送0的四个对象,成功后发送1的四个对象,以此类推,当发送完8后,停止));
问题是:应该发送9次就好了,现在发送了33次。不知道什么原因。
循环上面的数组进行数据请求,每次发送该数组中的一个元素(即第一次发送0的四个对象,成功后发送1的四个对象,以此类推,当发送完8后,停止));
问题是:应该发送9次就好了,现在发送了33次。不知道什么原因。
我自己封了一个函数专门处理这种梯队请求,总共2个参数,一个参数是要循环的数组,一个参数是要处理的异步操作。
function Promise_reduce(arr, fn) {
return arr.reduce((promise, item) => promise.then(res => fn(item).then(r => (res.push(r), res))),
Promise.resolve([]))
}
你的需求就可以这样写:
// 假如你的数组是这样的
var datas = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13]
]
// 这个是ajax请求的方法
function ajaxFn(item) {
return new Promise((resolve, reject) => {
this.$api.post("xxx", JSON.stringify(item), (response) => {
if (response.status == 200) {
if (response.data.success) {
resolve('数据插入成功');
} else {
resolve('数据插入失败')
}
} else {
resolve('接口请求失败')
}
})
})
}
Promise_reduce(datas, ajaxFn).then((res) => {
console.log(JSON.stringify(res))
// [res1, res2, res3, res4] 分别对应每个请求
})
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
问题: