async.waterfallでハマるパターン
2014年7月8日
忘れた頃に async の waterfall 関数を使うと毎度ハマる。
1分で終わる予定のことに1時間以上掛かると凹むのでメモる、
メモるんだくそがぁ!
注意すべき三か条
1. 次タスクへ値を渡す場合は: next(null, arg1 ,arg2)
2. タスクが引数を受け取る時は: function(arg1, arg2, error)
3. 最後のコールバックが引数を受け取る時は: function(error, 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){ });
くそがー!!!