async.forEach

非同期処理にはasync.jsを使ってて、大体async.series、async.parallelとかだけでやってたけど、forEachとかのループ中に非同期処理が入ってきたりすると面倒だなあと思ってた。

そういうときはasync.forEach、async.forEachSeriesを使えばよさげ。

var async = require('async');

async.forEach([1, 2, 3], function(val, cb) {
  setTimeout(function() {
    console.log(val);
    cb();
  }, 1 / val * 1000);
}, function() {
  console.log('fin');
});
// output
// 3
// 2
// 1
// fin


async.forEachSeries([1, 2, 3], function(val, cb) {
  setTimeout(function() {
    console.log(val);
    cb();
  }, 1 / val * 1000);
}, function() {
  console.log('fin');
});
// output
// 1
// 2
// 3
// fin

という感じで使える。