我有一个jquery队列,我想删除几个元素。我不能为此使用groupName,所以理想情况下应该有一个循环遍历每个排队元素的函数,检查是否应该清除它,然后清除它。
我怎样才能做到这一点?
我试过
$.each(queue, function(index, value) {}
但这不会循环遍历队列元素。
有什么想法吗?
答案 0 :(得分:1)
要详细说明我的评论,您正在使用的MultiQueue插件不会公开仍处于待处理状态的请求列表。但是,它的queue()
方法会为每个请求返回一个可中止的承诺。
因此,您可以维护自己的数组:
var requests = [];
使用queue()
返回的承诺填充该数组,以及您需要的信息,以确定每个请求是否应该继续:
requests.push({
promise: queues.queue(doRequest),
url: theUrlOfThatRequest,
other: ["pertinent", "information"]
});
从那里,您可以遍历该数组并中止您想要的承诺:
$.each(requests, function(index, request) {
if (shouldBeAborted(request)) {
request.promise.abort();
}
}
请注意,您还必须从requests
数组中删除成功和中止的承诺,以防止增长太多并避免多次处理承诺。我将其作为练习,因为正确的方法取决于您发出的请求数量。