我需要在async.eachSeries
调用的迭代之间等待一秒,因为第三方API的限制可以通过限制调用者每秒发出多个请求来防止滥用。
我不清楚如何做到这一点。我可以简单地将系列callback
作为参数函数传递给对setTimeout
的调用吗?我怀疑这不会起作用,但在我收集测试它所需的所有代码之前我想过要问。如果setTimeout
不是答案,那么我的替代方案是什么?
答案 0 :(得分:2)
是的,setTimeout()
可用于在通常调用callback()
时添加延迟。
// vs. callback();
setTimeout(callback, 1000);
任何传递给callback()
的参数都可以是passed after the timeout's delay
。
// vs. callback(err);
setTimeout(callback, 1000, err);
// vs. callback(err, result);
setTimeout(callback, 1000, err, result);
示例:
async.eachSeries([1, 2, 3], function (n, callback) {
request3rdPartyAPI(n, function (err, result) {
setTimeout(callback, 1000, err);
});
});