【管子先生的Node之旅·13】Node中的JavaScript
2017-10-30 本文已影响0人
管子先生
事件
在 Node 中如何像浏览器中的 JavaScript 一样去定义和触发事件的呢?为此,Node 暴露了Event EmitterApi,该API上定义的 on ,emit 和 removeListener 方法,可以为我们提供这些服务。他们以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.pngBUFFER
buffer 是一个表示固定内存分配的对象(也就是说,你要放东西前,先把位置腾出来),它就好比是一个由八位字节元素组成的数据,可以有效的在 JavaScript 中表示二进制数据。
//先创建一个空间
var h = new Buffer(256);
//写入数据
h.write('程序猿');
//读取数据
h.toString();