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

来源:互联网 发布:卓讯企业数据网 编辑:程序博客网 时间:2024/06/09 22:15

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

事件

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

//event.jsvar 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.jssome_event1111 occured.D:\node.js\0211>

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

事件循环

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

这里写图片描述

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

0 0
原创粉丝点击