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){
});
くそがー!!!