【管子先生的Node之旅·13】Node中的JavaScript

2017-10-30  本文已影响0人  管子先生

事件

Node 中如何像浏览器中的 JavaScript 一样去定义和触发事件的呢?为此,Node 暴露了Event EmitterApi,该API上定义的 onemitremoveListener 方法,可以为我们提供这些服务。他们以process.EventEmitter形式暴露出来:

    var EventEmitter = require('events').EventEmitter;
    var event = new EventEmitter();
    // 为指定事件注册一个监听器
    event.on('Animal', function(name) {
       console.log('我看到了' + name);
    });
    // 触发监听器
    event.emit('Animal', '单身狗');

执行结果:

image.png

这个 API 相比 DOM 下的更简洁很多,Node 中使用,你也可以方便的添加到自己的类里面:

    var EventEmitter = require('events').EventEmitter;

    function Animal() {};

    Animal.prototype.__proto__ = EventEmitter.prototype;

    var animal = new Animal();
 
    animal.on('a', function(name) {
        console.log('此次进来的是:' + name);
    })

    animal.emit('a', '程序猿');

执行结果:

image.png

如果你只想某个事件被触发一次,可以采用下面这个方法:

    var EventEmitter = require('events').EventEmitter;
    var event = new EventEmitter();

    event.once('Animal', function(name) {
        console.log('我看到了' + name);
    });

    event.emit('Animal', '单身狗');
    event.emit('Animal', '铲屎官');

执行结果:

image.png

BUFFER

buffer 是一个表示固定内存分配的对象(也就是说,你要放东西前,先把位置腾出来),它就好比是一个由八位字节元素组成的数据,可以有效的在 JavaScript 中表示二进制数据。

    //先创建一个空间
    var h = new Buffer(256);
    //写入数据
    h.write('程序猿');
    //读取数据
    h.toString();
上一篇下一篇

猜你喜欢

热点阅读