2013-09-30 42 views
2

正如標題所說,我在尋找一些Combinator的collect收集在同一時間發出的事件到一個列表,類似於一個在無香蕉中發現。換句話說:Bacon.js是否有一些組合器,允許您同時收集兩個事件?

collect :: EventStream a -> EventStream [a] 
collect [(time1, e1), (time1, e2)] = [(time1, [e1,e2])] 

如果它不存在,我該如何實現它?細讀源,我看不出有某種方式來讀取事件的發生的「時間」,例如Bacon.Event類似乎並沒有記錄其自身發生的時間?我應該使用JavaScript的本地new Date().getTime()功能,以紀念事件事後,並斷言事件的一些任意的時間框架內發生的事情實際上是「同時」。

回答

2

有沒有在Bacon.js事件同時性的概念。這些事件都沒有時間戳。

可以大致組同時發生的事件使用stream.bufferWithTime(1)。你會得到一系列大致同時發生的事件。

如果您需要的時候在輸出中,你可以使用stream.map(f)與它結合了當前時間的陣列功能。

所以,這樣的事情:

stream.bufferWithTime(1).map(function(events) { 
    return { 
    events: events, 
    timestamp: new Date().getTime() 
    } 
}) 
相關問題