2013-10-03 33 views
1

所以我對功能性編程範例相當陌生,特別是對於Bacon.js和FRP而言是新的。 我需要一些關於如何概念化FRP控制流的建議。我有一個計時器在事件流中倒數到零。當它達到零時,我想隱藏HTML定時器計數器並停止事件流。bacon.js中的控制流,在給定時間如何做某件事

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

當定義你的流時,包括takeWhile結束條件的流。您可以使用onEnd在流結束時分配副作用。

+0

非常感謝!這當然有訣竅。我承認在閱讀文檔時很sl sl。 – droidballoon