api之间的延迟调用Nodejs

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)

Rob*_*ann 9

有问题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)