我使用最近速率受限的API,并且必须每15秒运行一次请求,因为这是等待时间,否则返回超过429速率限制的状态代码。
我经常需要针对此API运行多个电子邮件地址,并且电子邮件地址包含在数组中。如何每隔15.5秒运行一次请求,但是移动到每个电子邮件地址直到数组结束?这肯定是一个非常棘手的问题。我试过了:
setInterval(checkEmail(email), 15500);
没有快乐,因为某些原因似乎没有用。顺便说一下,我应该指出我在checkEmail(电子邮件)函数中使用了JQuery $ .ajax()。
任何想法?
提前致谢。
答案 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) {....})
。