在每次迭代中执行带有超时的async.series的最佳方法是什么?

时间:2014-09-15 21:54:13

标签: javascript node.js asynchronous settimeout

我需要在async.eachSeries调用的迭代之间等待一秒,因为第三方API的限制可以通过限制调用者每秒发出多个请求来防止滥用。

我不清楚如何做到这一点。我可以简单地将系列callback作为参数函数传递给对setTimeout的调用吗?我怀疑这不会起作用,但在我收集测试它所需的所有代码之前我想过要问。如果setTimeout不是答案,那么我的替代方案是什么?

1 个答案:

答案 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);
    });
});