kidoOooOoooOOom

IT系で開発やってます

async.waterfallで気をつけておくこと

JS学んでまだ日が浅いせいか、callbackの引数周りがよく混乱する。特に今日はasync.waterfallでcallbackの第1引数にはnull, 第2引数にidとかを設定しておいて、次の関数では第1引数でidを受け取っている感じになっていて、えええーーとなった。
第1引数がerrとして与えられる文化を覚えていかねば。。

async.waterfall([
  function(callback) {
    console.log('1');
    setTimeout(function() {
      console.log('1 done');
      callback(null, 1);
    }, 100);
  },
  function(arg1, callback) { // arg1 === 1
    console.log('2');
    setTimeout(function() {
      console.log('2 done');
      callback(null, 1, 2);
    }, 50);
  },
  function(arg1, arg2, callback) { // arg1 === 1, arg2 === 2
    console.log('3');
    setTimeout(function() {
      console.log('3 done');
      callback(null, 1, 2, 3);
    }, 10);
  }
], function(err, arg1, arg2, arg3) { // arg1 === 1, arg2 === 2, arg3 === 3
  if (err) {
    throw err;
  }
  console.log('all done.');
  console.log(arg1, arg2, arg3);
});

//出力結果
1
1 done
2
2 done
3
3 done
all done
1 2 3