【发布时间】:2020-03-25 10:16:51
【问题描述】:
我正在尝试使用承诺和异步函数将数组的块发送到将它们插入数据库的 api 调用。我试图让顶部函数对数组进行分块并等待后端完成,然后它将继续进行下一个块。它在第一次迭代后出错。有什么想法吗??
async chunkArray(arr) {
let len = arr.length
let update_arr
let i = 1
for(i; i<=len; i++) {
if((i%125) === 0) {
update_arr = arr.slice(i-125,i)
await this.updateChuckArray(update_arr)
} else if(i === len) {
let div = (Math.floor(len/125) * 125)
update_arr = arr.slice(div, len)
await this.updateChuckArray(update_arr)
}
}
},
updateChuckArray(update) {
return new Promise(resolve => {
this.$http.put(`/route`, update).then(res => {
res.data.error ? this.$root.updateError(res.data.error) : this.$root.updateSuccess(res.data.message)
}).catch(error => {
this.$root.updateError(res.data.error)
})
})
}
【问题讨论】:
-
它是如何“出错”的?
-
我收到请求实体太大,我正在尝试发送长度为 125 的数组卡盘
-
你在数组上循环和切片的方式看起来很奇怪。为什么不只是do it like this?我怀疑这可能会解决您的错误。您还应该尝试使用调试器单步执行循环,以准确查看每一步从数组中切出的内容。