官术网_书友最值得收藏!

Observable node event emitter (fromEvent)

Lots of Node.js modules implement an event emitter, which is basically an object with the on() method that is called every time an event happens. We can transform these objects into EventStreams of bacon.js to take advantage of all the transformations. The method fromEvent() has the following signature:

Bacon 
.fromEvent(eventEmitter,eventName);

The parameters are eventEmitter; the node eventEmitter object; and eventName, the name of the event. We can use the fs module to show the usage of this method.

To read a file using the fs node module that uses an event emitter, we need to create a readStream for the file using the following code:

var fs = require('fs'); 
var FILE_PATH = 'SOME FILE';
var readStream = fs.createReadStream(FILE_PATH,'utf8');

Then, subscribe to the events on this emitter using the on() method, as follows:

readStream.on('data',(content)=>console.log(content)); 

To transform this code into a code using a bacon.js EventStream, we need to change the last line of the following code:

var eventStream = Bacon.fromEvent(readStream,'data'); 
eventStream
.onValue((content)=> console.log(content));

So comparing with the method signature, our eventEmitter parameter is the readStream object and eventName is data.

The fromEvent() method can also be used to listen to DOM events (similar to the asEventStream() method), as you can see in the following code:

var clickEventStream = Bacon.fromEvent(document.getElementById('#myButton'), 'click'); 
主站蜘蛛池模板: 和硕县| 盐津县| 崇信县| 延安市| 永定县| 五寨县| 谢通门县| 靖远县| 巴中市| 微博| 安仁县| 多伦县| 普兰县| 修水县| 孙吴县| 连山| 专栏| 西和县| 海口市| 福安市| 洛隆县| 平乐县| 扶余县| 修水县| 长春市| 陇西县| 商城县| 文登市| 清新县| 探索| 车险| 渝北区| 淮北市| 新绛县| 道真| 山阳县| 长泰县| 水富县| 盘锦市| 宜宾市| 庐江县|