nodejs使用事件驱动模型,当服务器接受到了请求之后,就会关闭这个请求,然后再处理,为的是等待下一个请求。这样,请求就不会被耽搁。这个模型的效率非常高,因为他一直在接受请求,而没有等待任何读写操作。在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数:
在node中我们常常使用events模块来实现,即首先引入events,然后创建一个对象,利用这个对象的on方法绑定时间,然后利用对象的emit方法来触发事件,利用emit事件触发事件一定要对应。代码如下所示:
varevents = require("events");//引入模块
vareventEmitter =new events.EventEmitter();//创建实例化对象
//对象方法调用
eventEmitter.on("fun", function () {
console.log("我是第一个");
});
eventEmitter.on("fun", function () {
console.log("我是第二个");
});
eventEmitter.on("fun", function () {
console.log("我是第三个");
});
eventEmitter.on("fun", function () {
console.log("我是第四个");});
eventEmitter.emit("fun");
console.log("结束了");
EventEmitter 除了on属性还有其他的属性,如下所示:
- addListener(event, listener) — 它和on是类似的,都是添加某一个事件的监听器。
- removeListener(event, listener) — 即通过此API可以将监听器取消(特定的listener)。
- removeAllListeners(event) — 可以取消event下的所有监听器。
- newListener(event, listener); — 该事件在添加新的监听器时被触发。
- listenerCount(emitter, event); — 返回指定监听器的数量。
- listeners(event) — 返回指定事件的监听器数组。