事件
在 Node 中如何像瀏覽器中的 JavaScript 一樣去定義和觸發(fā)事件的呢嗽上?為此喊暖,Node 暴露了Event EmitterApi帅涂,該API上定義的 on 级乐,emit 和 removeListener 方法疙咸,可以為我們提供這些服務(wù)。他們以process.EventEmitter形式暴露出來:
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
// 為指定事件注冊(cè)一個(gè)監(jiān)聽器
event.on('Animal', function(name) {
console.log('我看到了' + name);
});
// 觸發(fā)監(jiān)聽器
event.emit('Animal', '單身狗');
執(zhí)行結(jié)果:
這個(gè) API 相比 DOM 下的更簡(jiǎn)潔很多风科,Node 中使用撒轮,你也可以方便的添加到自己的類里面:
var EventEmitter = require('events').EventEmitter;
function Animal() {};
Animal.prototype.__proto__ = EventEmitter.prototype;
var animal = new Animal();
animal.on('a', function(name) {
console.log('此次進(jìn)來的是:' + name);
})
animal.emit('a', '程序猿');
執(zhí)行結(jié)果:
如果你只想某個(gè)事件被觸發(fā)一次,可以采用下面這個(gè)方法:
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.once('Animal', function(name) {
console.log('我看到了' + name);
});
event.emit('Animal', '單身狗');
event.emit('Animal', '鏟屎官');
執(zhí)行結(jié)果:
BUFFER
buffer 是一個(gè)表示固定內(nèi)存分配的對(duì)象(也就是說贼穆,你要放東西前题山,先把位置騰出來),它就好比是一個(gè)由八位字節(jié)元素組成的數(shù)據(jù)故痊,可以有效的在 JavaScript 中表示二進(jìn)制數(shù)據(jù)顶瞳。
//先創(chuàng)建一個(gè)空間
var h = new Buffer(256);
//寫入數(shù)據(jù)
h.write('程序猿');
//讀取數(shù)據(jù)
h.toString();