jQuery限制和排队的AJAX请求

时间:2011-08-16 17:42:46

标签: jquery

我正在与允许每5秒执行一次操作的API进行交互。但是,我想确保所有请求都以主机结束。如何使用.ajax()?

对API的请求进行排队和限制

非常有责任!

5 个答案:

答案 0 :(得分:11)

你可以沿着这些方向做点什么

var requests = [];

setInterval(function() {
    if(requests.length > 0) {
        var request = requests.pop();
        if(typeof request === "function") {
            request();
        }
    }
}, 5000);

// then anywhere you need to make an ajax request
requests.push(function() {
    // ajax request here
    $.ajax({
        url: "/foo", // some variable from outer scope
        success: function(a,b,c) {
            // handle it
        }
    });
});

答案 1 :(得分:3)

jQuery有一个.delay().queue()界面,我建议你查看并阅读。

答案 2 :(得分:1)

我强烈建议使用此插件来限制Ajax请求:http://benalman.com/projects/jquery-throttle-debounce-plugin/

答案 3 :(得分:0)

这是一个较短的解决方案,并且不会限制第一个进入队列的呼叫。

let ajaxQueue = [];
let ajaxQueueTime = 2000;

像这样执行你的ajax调用。

requests.push(function() {
    $.get(url, function(rsp) {
        console.log("Hello");
    });
});

这是处理ajax调用队列的例程。

(function throttleAjax() {
    if (ajaxQueue.length > 0) ajaxQueue.pop()();
    setTimeout(throttleAjax, ajaxQueueTime);
})();

答案 4 :(得分:-3)

如果你想确保任何东西,那么你最好得到一个中等的其他而不是互联网 - 它本质上是不可靠的。无论如何,为了尝试来确保,您可以使用Javascript setTimeout方法稍后发起呼叫。

除此之外,如果您不想使用任何其他第三方资源,您可以查看jQuery公开的delay方法。