首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环中的jQuery延迟队列

for循环中的jQuery延迟队列
EN

Stack Overflow用户
提问于 2015-05-13 13:06:24
回答 1查看 120关注 0票数 0

我的职能如下:

代码语言:javascript
复制
function getData(a,url) {
        var deferreds = [];
        var i = 1;
        for (i = 1; i <= a.length; i++) {
            var count = i;
            var back = a[i]['link'];
            var path = "http://example.com";
            deferreds.push(
            $.ajax({
                url:path,
                data:{back:back,link:url},
                type:"POST",
                async: true,
                delay: count
            }).done(function(data) {
                //success function here
            }));
        }


        return deferreds;
    }

我的问题是如何使这个脚本运行一个队列,例如我有2000个请求,如何将它们一个接一个地放到一个100个队列中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 13:28:23

也许是这样(当然是一种简化)

代码语言:javascript
复制
var completed = 0;
var limit_simultaneous = 100;
var total_requests = 2134 // Assign your var

function send_block() {
    for (i = 0; i < limit_simultaneous; i++) {
        $.ajax({
            url:path,
            data:{back:back,link:url},
            type:"POST",
            async: true,
        }).done(function(data) {
           completed++;
           send_next_block();
           //success function here
        }));
    }
}

function send_next_block() 
{
    if (completed == limit_simultaneous && total_requests > 0) {
        total_requests = total_requests - completed;
        if (total_requests < limit_simultaneous) {
            limit_simultaneous = total_requests;
        }
        completed = 0;
        // Fire again
        send_block(); // Send another 100
    }
}

希望能帮上忙。

编辑编辑,以考虑总请求。也许不是一个有效的代码,但这是一个想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30215740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档