清除带过滤功能的队列?

时间:2014-05-06 11:10:36

标签: javascript jquery ajax

我有一个jquery队列,我想删除几个元素。我不能为此使用groupName,所以理想情况下应该有一个循环遍历每个排队元素的函数,检查是否应该清除它,然后清除它。

我怎样才能做到这一点?

我试过

$.each(queue, function(index, value) {}

但这不会循环遍历队列元素。

有什么想法吗?

1 个答案:

答案 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数组中删除成功和中止的承诺,以防止增长太多并避免多次处理承诺。我将其作为练习,因为正确的方法取决于您发出的请求数量。