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> 

Должен ли я действительно использовать, если/другое, чтобы проверить значение и вызвать функцию, как я делаю в onValue()? Каким-то образом кажется, что я делаю это неправильно. И когда я доволен eventStream, как мне его остановить или закрыть?

ответ

4

При определении вашего потока включите takeWhile, чтобы завершить поток при условии. Вы можете использовать onEnd для назначения побочного эффекта на конец потока.

+0

Большое спасибо! Это, безусловно, сделал трюк. Я признаю, что небрежный при чтении документов. – droidballoon