我正在使用API-'我被伪造了吗?'受速率限制-“每1500毫秒限制一次”。我在这里查看了很多其他问题,这些问题通过google和其他一些论坛站点进行了研究,并试图自己找到解决方案。
执行Javascript函数
setInterval()
真的要解决此类问题吗?有没有人找到有效的解决方案?我有点不知所措,
var url = "https://haveibeenpwned.com/api/v2/breachedaccount/";
var breach = Array();
setInterval($.ajax({
url: url,
type: 'GET',
dataType: 'JSON',
success: function(data) {
breach[] = data;
}), 15000);
似乎不起作用,尤其是在我当前的项目正在存储多个电子邮件地址的信息的地方。因此,例如,如果我将4个电子邮件地址存储在一个数组中,并且想循环浏览,但是要等待1500毫秒,然后再次点击API来查询下一个电子邮件地址。
有任何想法吗?还是有一个NodeJS解决方案可以像我最近所学到的那样起作用。
提前谢谢
答案 0 :(得分:0)
我将创建一个包含请求的队列,并逐个处理它们。
function myRequestQueue()
{
this.queue = [];
this.timer = null;
this.add = function(params)
{
this.queue.push(params);
}
this.processQueue = function()
{
if (this.queue.length > 0)
{
$.ajax(this.queue.shift());
}
}
this.timer = setInterval(this.proceesQueue,1500)
}
用法:
var myQ = new myRequestQueue(), breach = [];
for(var i=0;i<100;i++){
myQ.add({
url: url,
dataType: 'JSON',
success: function(data) { breach.push(data) }});
} // 100 requests
// expect them to be processed one by one every 1500 ms
清空队列后,您可能想添加回调,具体取决于您的实际用例