【发布时间】:2014-08-10 10:46:36
【问题描述】:
我正在使用服务将文章的单词替换为同义词,该服务的 API 限制为每分钟 60 个请求。我有两个函数,第一个获取文章并将其拆分为一个数组,然后调用另一个替换单词,我尝试通过将超时设置为第二个来做到这一点,这样它将首先被调用,然后在 60 秒后调用,然后在 120 秒后……所以我每分钟最多调用该服务 60 次。
generateArticle : function(data){
Art.words = data.split(" ");
for(var j=0; j<Art.words.length/60; j+=1){
setTimeout(Art.generateSector(j*60),j*60000);
}
},
generateSector : function(position){
var count = 0;
for(var i=position; i<Art.words.length; i+=1){
if(Art.words[i].length > 3 && isNaN(Art.words[i]) && count < 60){
Art.findsimilarword(Art.words[i],i);
count++;
}
}
},
但是发生的情况是第二个函数被立即调用,所以在一篇有 400 个单词的文章中,前 60 个单词将被正确替换,但对于其余 340 个单词,我收到错误 429 (Too Many Requests) 。我是否以错误的方式使用 setTimeout?有人可以向我解释为什么会这样吗?
【问题讨论】:
标签: javascript