使用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和node来完成这样简单的事情。
我试过这个:
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)
您需要培根巴士。您只需将数据推送到总线,而不是发出事件。
如果你想使用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示例可能会很有用。
相关文章:
- 点击启动弹出事件未显示
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 萨特利泽关闭弹出事件
- d3 中是否有点击和双击事件.js力定向图
- gulpfile 引发错误事件.js:154
- Chrome 扩展程序在后台注册事件.js
- Google Analytics(分析)在淘汰赛中推送跟踪事件.js数据绑定
- 节点抛出模块.js:340错误
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 如何在木偶中使用模型事件.js
- 设置超时功能在 chrome 扩展程序弹出窗口.js问题
- JSON 字符串中的换行符不会出现在 JS 对象中
- 节点.js - 事件.js:154 抛出错误写入 EPIPE;程序崩溃
- 如何找出哪个 JS 文件正在重新路由 URL
- 弹出窗口.js 未在 Chrome 扩展程序中的 Popup 的头部标签中执行.html Popup
- 无法将消息从 Chrome 扩展程序中的弹出窗口.js发送到后台.js
- 添加一个按钮,用于关闭带有弹出窗口.js的弹出窗口
- 如何在后台.js和弹出窗口.js之间进行通信
- 如何使用流的排出事件.在节点.js中可写
- 设置在 jQuery UI 对话框中弹出的 JS 警报的样式