Hir*_*del 5 javascript api node.js express
我正在使用Nodejs来实现一个Web应用程序.我有一个对象列表,我想为每个对象调用第三方API.问题是api有速率限制所以根据我的计算,我必须每1.5秒调用一次api.我尝试使用setTimeout方法但它在for循环中不起作用.我也查看了Cron模块,但它对我没有帮助,因为我只想为每个对象调用一次api.谁能帮我这个.这是我在服务器端的代码:
for(var obj in list)
{
setTimeout(function() {
apicall();
}, 1500);
}
Run Code Online (Sandbox Code Playgroud)
有问题for
的循环,或任何循环是,他们通常是快.事实上,它需要大约几微秒才能循环list
.这意味着在几微秒的范围内,您可以安排在1.5秒后调用几个匿名函数.这意味着所有功能,即使延迟,也几乎全部被解雇.
你需要的东西会导致延迟在for
循环过程中增加.
最基本的设置是使用数组的当前索引作为乘数.
for(var i in list) { // list is an array, i is current index
setTimeout(function() {
apicall()
}, 1500 * i) // With each iteration, the delay increases
}
Run Code Online (Sandbox Code Playgroud)
另外,在这个基本示例中,您甚至不需要闭包:
setTimeout(apicall, 1500 * i)
Run Code Online (Sandbox Code Playgroud)