使用 Bacon.js 发出事件
Emitting events with Bacon.js
我正在学习 Bacon.js,我对应该如何发出事件感到很困惑。
我这里有一个关于 node.js
事件的超级简单示例
var events = require('events')
var eventEmitter = new events.EventEmitter()
eventEmitter.on("add", function(data){
console.log(data+1)
return data+1
})
eventEmitter.emit('add', 5)
eventEmitter.emit('add', 3)
setTimeout(function(){
eventEmitter.emit('add', 13)
}, 1000)
setTimeout(function(){
eventEmitter.emit('add', 10)
}, 3000)
我找不到一个例子来说明如何使用 BaconJS 和节点来完成像这样简单的事情。
我试过这个:
var add = Bacon.fromEvent(eventEmitter, "add")
add.onValue(function(data){
return data+1
})
add.map(5)
add.map(3)
add.map(13)
add.map(10)
你需要 Bacon Bus。您只需将数据推送到总线,而不是发出事件。
如果您想使用 NodeJS 发射器,您的代码可能如下所示:
var add = Bacon.fromEvent(eventEmitter, "add")
// every time we get an event we add 1 to its' value
add.map(function(data){
return data+1
}).onValue(function(data){
console.log(data)
})
eventEmitter.emit('add',10)
请注意,您必须将 .onValue 附加到 add.map() 的结果。否则控制台将仅输出事件流中的原始值。 map 创建一个新的、修改过的流。
如果您对地图的工作原理感到有点困惑,BaconJS Snake example 可能会有用。
我正在学习 Bacon.js,我对应该如何发出事件感到很困惑。
我这里有一个关于 node.js
事件的超级简单示例var events = require('events')
var eventEmitter = new events.EventEmitter()
eventEmitter.on("add", function(data){
console.log(data+1)
return data+1
})
eventEmitter.emit('add', 5)
eventEmitter.emit('add', 3)
setTimeout(function(){
eventEmitter.emit('add', 13)
}, 1000)
setTimeout(function(){
eventEmitter.emit('add', 10)
}, 3000)
我找不到一个例子来说明如何使用 BaconJS 和节点来完成像这样简单的事情。
我试过这个:
var add = Bacon.fromEvent(eventEmitter, "add")
add.onValue(function(data){
return data+1
})
add.map(5)
add.map(3)
add.map(13)
add.map(10)
你需要 Bacon Bus。您只需将数据推送到总线,而不是发出事件。
如果您想使用 NodeJS 发射器,您的代码可能如下所示:
var add = Bacon.fromEvent(eventEmitter, "add")
// every time we get an event we add 1 to its' value
add.map(function(data){
return data+1
}).onValue(function(data){
console.log(data)
})
eventEmitter.emit('add',10)
请注意,您必须将 .onValue 附加到 add.map() 的结果。否则控制台将仅输出事件流中的原始值。 map 创建一个新的、修改过的流。
如果您对地图的工作原理感到有点困惑,BaconJS Snake example 可能会有用。