我正在与允许每5秒执行一次操作的API进行交互。但是,我想确保所有请求都以主机结束。如何使用.ajax()?
对API的请求进行排队和限制非常有责任!
答案 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)
答案 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
方法。