/ / async.jsイテレータに遅延を追加する方法(Node) - node.js、async.js

async.js iterator(Node)に遅延を追加する方法 - node.js、async.js

Nodeでクローラーを書いているところです。 async.js としょうかん。 クロールするサーバーに負担をかけたくないので、繰り返しの間に遅延を導入したいのですが、これを行うための最善の方法は何ですか?setTimeout内のiteratorからcallback()を呼び出すだけでいいのですか

回答:

回答№1の場合は3

Asyncライブラリを使った非同期タスクの完了は、常に完了コールバックを呼び出すことによって通知されるので、単にそれを 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() {
//...
});

回答№2の場合は1

それはうまくいくでしょう、あなたはそのように非同期シリーズを使うことができます:

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();
});