控制bacon.js中的流程,如何在给定时间做某事

时间:2013-10-03 06:20:52

标签: javascript coffeescript functional-programming bacon.js

所以我对功能编程范例相当新,特别是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感到满意时,如何停止/关闭它?

1 个答案:

答案 0 :(得分:4)

定义流时,请包含takeWhile以在某个条件下结束流。您可以使用onEnd为流端分配副作用。