
70
3
章 コールバックを用いた非同期パターン
処理を実行する場合はどうすればよいでしょうか。そのような要件に適したヘルパー関数が
async.
eachSeries()
です。このヘルパー関数を使って
spiderLinks()
を書き換えてみましょう(
08_
async_sequential_iteration
)。
function spiderLinks(currentUrl, body, nesting, callback) {
if(nesting === 0) {
return process.nextTick(callback);
}
const links = utilities.getPageLinks(currentUrl, body);
if(links.length === 0) {
return process.nextTick(callback);
}
async.eachSeries(links,
(link, callback) => {
spider(link, nesting - 1, callback);
}, callback);
}
このコードをバージョン
2
のウェブスパイダーのコードと見比べると、
async.eachSeries()
のお
かげでコードがかなり単純になっているのがわかります。
3.3.2
並行処理
async
ライブラリは逐次処理だけでなく、並行処理もサポートします。並行処理のためのヘルパー
関数には、
each()
、
map()
、
filter()
、
re ...