日々精進

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

step.jsとcoffeescriptを一緒に使うと挙動がおかしくなる

step.jsを使って非同期処理をわかりやすくしようとしたらはまった。

  step(->
    request
      uri:uri
      headers: headers
      , this
  , ->
    console.log arguments
  )

上記だと二段目の関数の引数にrequestオブジェクトが渡される。
responseが取れなくて、なぜ〜?と悩んでいたが原因は以下だった。
・step.jsは値がreturnされるとそれを次の関数に渡す仕様
coffeescriptは最後に評価された値を自動でreturnする
なのでreturnをrequestの後に追加すれば正しく動いた。

  step(->
    request
      uri:uri
      headers: headers
      , this
    return
  , ->
    console.log arguments
  )

これはちょっとださいがしょうが無いか。。