読者です 読者をやめる 読者になる 読者になる

日々精進

新しく学んだことを書き留めていきます

step.jsのgroupを使ったときに次の関数に渡される結果がすべてundefinedになる

IT node

以下のコードだとnumsがすべてundefinedの配列になる。

  step(
    ->
      group = this.group()
      func = (done) ->
        done(1)
      for i in [0..10]
        setTimeout func(group), 100
    , (err, nums) ->
      console.log nums
  )

これは非同期関数のfuncの第一引数がエラーオブジェクトでないため。
以下のように結果を第二引数以降に渡すと正しく結果が渡される。

  step(
    ->
      group = this.group()
      func = (done) ->
        done(null, 1)
      for i in [0..10]
        setTimeout func(group), 100
    , (err, nums) ->
      console.log nums
  )