我有一个选定的id
列表:
[1, 3, 5, 7]
我有删除网址删除所选项目:
/api/users/<pk>/delete/
但是网址每次只能传递一个id
。
因此,应使用for循环删除所选项目。
删除方法如下,delete_url(id)
是网址,(response) => {}
是成功回调,最后一个是错误回调:
this.$http.delete(delete_url(id), (response) => {
}, (error) => {
})
您知道有一次只能删除一个项目,但如果我使用for循环执行该方法,我怎么知道所有删除请求何时执行完成?我怎么知道它是否会删除所有成功?
答案 0 :(得分:0)
你可以通过写一个递归函数来做到这一点,其中成功回调你调用你的递归函数。例如
function deleteMany(index=0){
if (index < deleteArray.length){
var id = deleteArray[index]
this.$http.delete(delete_url(id), (response) => {
deleteMany(index+1)
}, (error) => {
//your error handling logic here
})
}
}
答案 1 :(得分:0)
您可以使用for循环执行此操作。 for循环立即发送所有请求,然后计算请求回调触发的次数,一旦该数字与您知道所有请求已完成的数组的长度匹配。
var someArray = [1, 3, 5, 7],
someArrayLength = someArray.length
callbackCount = 0,
i,
for (i = 0; i < someArrayLength; i++) {
this.$http.delete(delete_url(someArray[i]), (response) => {
callbackCount++;
if (callbackCount === someArrayLength) {
// All callbacks have been made you can continue on
}
}, (error) => {
callbackCount++
if (callbackCount === someArrayLength) {
// All callbacks have been made you can continue on
}
})
}
注意:由于错误案例和正常案例是隔离的,我必须添加if检查两次