1

したがって、私は関数型プログラミングのパラダイムにかなり慣れていません。特に Bacon.js と FRP には慣れていません。FRP で制御フローを概念化する方法についてアドバイスが必要です。イベント ストリームにゼロまでカウントダウンするタイマーがあります。ゼロになったら、HTML タイマー カウンターを非表示にして、イベント ストリームを停止します。

timer.coffee

# decrement function
dec = (x,y) ->
    x-y

# Create a timer counting down from 100 every 10th millisecond
timer = Bacon.interval(10, 1).scan(100, dec)

timer.onValue (e) ->
  # output the current timer value to the DOM
  $("#timer").text(e)

  # if the timer has reached 0, hide the DOM object 
  $("#timer").hide() if e is 0

timer.html

<body>
  <div id="timer"></div>
</body>

で行っているように、本当に if/else を使用して値をチェックし、関数を呼び出す必要がありますonValue()か? なんとなく自分のやり方が間違っているような気がします。そして、eventStream に満足したら、どうすればそれを停止/閉じることができますか?

4

1 に答える 1

4

ストリームを定義するときは、条件に応じてストリームを終了するために takeWhile を含めます。onEnd を使用して、ストリームの終了時に副作用を割り当てることができます。

于 2013-10-04T05:51:48.870 に答える