旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

async.waterfallでハマるパターン

2014年7月8日

忘れた頃に async の waterfall 関数を使うと毎度ハマる。

1分で終わる予定のことに1時間以上掛かると凹むのでメモる、
メモるんだくそがぁ!

注意すべき三か条

1. 次タスクへ値を渡す場合は: next(null, arg1 ,arg2)
2. タスクが引数を受け取る時は: function(arg1, arg2, error)
3. 最後のコールバックが引数を受け取る時は: function(error, arg1, arg2)

サンプル

async.waterfall([
  function(next){
    // エラーの場合は第一引数にエラーオブジェクトを入れるので..
    var err = エラーが発生したら;
    if (err) return next(err);
    // 正常終了時の第一引数は null になる
    next(null, 'arg-one');
  },
  // タスクが引数を受け取る場合は、コールバックの前に配置する
  function(arg1, next){
    next(null, arg1, 'arg-two');
  },
  // 複数ある場合はこうなる
  function(arg1, arg2, next){
    next(null, arg1, 'arg-two');
  }
  // ただし、締めのコールバックは、エラーオブジェクトが前になる
  // これは async というよりは node 全体の慣例
], function(err, arg1, arg2){
});

くそがー!!!