node.js自学笔记(4)-事件

node.js中所有的异步I/O操作都会发送一个事件到事件队列中,下面我们先来看看事件在node.js中的定义

事件

在node中,用EventEmitter对象来提供事件,请看下面代码:

//event.js
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('some_event',function(){ console.log('some_event occured.'); });
event.on('some_event1111',function(){ console.log('some_event1111 occured.'); });
setTimeout(function(){ event.emit('some_event1111'); },1000);

上面的代码中我们首先得到事件模块中EventEmitter对象,然后由此创建了event实例。然后提供了2个事件some_eventsome_event1111 。最后我们用setTimeout函数定时发送了一个事件some_event1111 。请看输出:

D:\node.js\0211>node event.js
some_event1111 occured.

D:\node.js\0211>

程序会在等待一秒后打印上面的信息。这就是异步I/O的机制,当I/O工作完成后,它就会给回调函数事件发送消息,然后该回调函数会被执行。

事件循环

node是基于事件循环来处理回调函数的

node.js自学笔记(4)-事件_第1张图片

node程序是从事件循环开始的,从事件循环结束的。但是程序的入口是第一个回调函数,如果回调函数有I/O等操作,那么程序就会生成相应的事件,将事件处理放入到事件队列中,然后回到事件循环。事件循环会检查事件队列中有没有没处理的事件,如果有事件需要处理,那么就要进入事件对应的回调函数中进行操作。直到程序结束。

你可能感兴趣的:(node.js自学笔记(4)-事件)