每15秒运行一次API请求

时间:2016-09-09 10:07:03

标签: javascript jquery

我使用最近速率受限的API,并且必须每15秒运行一次请求,因为这是等待时间,否则返回超过429速率限制的状态代码。

我经常需要针对此API运行多个电子邮件地址,并且电子邮件地址包含在数组中。如何每隔15.5秒运行一次请求,但是移动到每个电子邮件地址直到数组结束?这肯定是一个非常棘手的问题。我试过了:

setInterval(checkEmail(email), 15500);

没有快乐,因为某些原因似乎没有用。顺便说一下,我应该指出我在checkEmail(电子邮件)函数中使用了JQuery $ .ajax()。

任何想法?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

var emails = [];   
var interval_id; 

function _start() {
    interval_id = window.setInterval(function() {
        var email = emails.shift();
        if (email) {
            var r=checkEmail(email.address);
            if (email.callback) email.callback(r);
        }
        else {
            window.clearInterval(interval_id);
        }
    }, 15500);
}

function add_email(email, callback) {
    emails.push({address:email, callback:callback});
    if (!interval_id) _start();
}

每当您要检查新电子邮件地址时,只需运行add_email(email)即可。这将把它添加到队列中,并在必要时启动间隔计时器。此外,如果您想在检查完成时收到通知,可以说add_email(email,function(result) {....})