0

我正在使用一个 API - “我被控制了吗?” 这是速率限制 - “每 1500 毫秒限制为一个”。我在这里查看了很多其他问题,通过谷歌和其他几个论坛网站进行了研究,并尝试自己找到解决方案。

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解决方案可以解决这个问题,因为我最近也一直在学习。

先感谢您

4

1 回答 1

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

您可能希望在队列清空时添加回调,或者根据您的确切用例添加回调

于 2018-09-02T21:03:34.557 回答