2013-09-30 31 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() 
    } 
}) 
相关问题