Node.js 如何在async.js迭代器(节点)中添加延迟

Node.js 如何在async.js迭代器(节点)中添加延迟,node.js,async.js,Node.js,Async.js,我正在Node中编写一个爬虫程序,刚刚发现了神奇的库。我不想让我抓取的服务器被压垮。所以我想在迭代之间引入一个延迟。最好的方法是什么?我可以在setTimeout内从迭代器调用callback()吗?如果可以,您可以像这样使用异步系列: async.eachSeries(TheUrl, function (eachUrl, done) { setTimeout(function () { var url = 'www.myurl.com='+eachUrl;

我正在Node中编写一个爬虫程序,刚刚发现了神奇的库。我不想让我抓取的服务器被压垮。所以我想在迭代之间引入一个延迟。最好的方法是什么?我可以在setTimeout内从迭代器调用callback()吗?

如果可以,您可以像这样使用异步系列:

async.eachSeries(TheUrl, function (eachUrl, done) {
    setTimeout(function () {
        var url = 'www.myurl.com='+eachUrl;
        request(url, function(error, resp, body) { 
            if (error) return callback(error); 
            var $ = cheerio.load(body);
            //Some calculations again...
            done();
        });
    }, 10000);
}, function (err) {
    if (!err) callback();
});

由于异步库中任何异步任务的完成都是通过调用完成回调来表示的,因此您可以通过将其放入
setTimeout()
来延迟调用。下面是一个例子,改编自异步文档中的一个例子:

async.eachSeries(hugeArray, function iterator(item, callback) {
    doSomeIO(item, function(err, result) {
        setTimeout(function() {
            // process err or result here
            callback(err);
        }, 500);
    });
  }
}, function done() {
  //...
});

请显示代码的代表性版本。在代码的上下文中回答这样的问题非常简单。