[英]jQuery throttling and queuing of AJAX requests
我正在与一个允许每 5 秒执行一次操作的 API 进行交互。 但是,我想确保所有请求都以主机结束。 如何通过 using.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
}
});
});
我强烈推荐这个插件来限制 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
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.