api调用Nodejs之间的延迟

我正在使用Nodejs来实现一个Web应用程序。 我有一个对象的列表,我想调用这些对象的每个第三方API。 问题是api有速率限制,所以根据我的计算,我必须每1.5秒调用一次api。 我尝试使用setTimeout方法,但它不适用于循环。 我也看了一下Cron模块,但它不能帮助我,因为我只想每个对象调用一次api。 谁能帮我这个。 这里是我的代码在服务器端:

for(var obj in list) { setTimeout(function() { apicall(); }, 1500); } 

for循环或任何循环的问题是,它们通常很快。 实际上,在list循环大约需要几微秒。 这意味着,在几微秒的范围内,你安排了几个匿名函数1.5秒后被调用。 这意味着所有的function,即使延迟,几乎都会一下子被解雇。

你需要的东西会导致延迟在for循环的过程中增加。

最基本的设置是使用arrays的当前索引作为乘数。

 for(var i in list) { // list is an array, i is current index setTimeout(function() { apicall() }, 1500 * i) // With each iteration, the delay increases } 

在附注中,在这个基本的例子中,你甚至不需要closures:

 setTimeout(apicall, 1500 * i) 

你可以创build一个variables来增加循环的每次传递时间,所以你的超时从1500,3000,4500每个循环中增加1500,每次你不工作的原因是因为该循环正在创build所有的超时在所有的毫秒因为他们是asynchronous调用,所以在1600毫秒之后,你有很多时间间隔。