jQuery限制和排队的AJAX请求

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

非常感谢!

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

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 } }); }); 

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

我强烈推荐这个插件来限制Ajax请求: http : //benalman.com/projects/jquery-throttle-debounce-plugin/

这是一个较短的解决方案,不会限制放入队列的第一个调用。

 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); })(); 

如果你想确保任何事情,那么你最好得到一个除互联网以外的媒介 – 它本身就是不可靠的。 无论如何,为了尝试确保,您可以使用Javascript setTimeout方法稍后启动调用。

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