在web前端的编程中,事件的应用十分广泛,dom上的各种事件,比如onclick 、onfocus等等。
在ajax大规模应用之后,异步请求更是得到广泛的认同,而ajax亦是基于事件机制的。
node.js的事件机制是基于v8引擎实现的事件驱动i/o,充分呢利用了异步i/o解决了单线程编程模型的性能瓶颈。
<b>事件机制的实现</b>
node.js内置了events模块,events模块(events.eventemitter)是一个简单的事件监听器模式的实现。具有addlistener/on,once,removelistener,removealllisteners,emit等基本的事件监听模式的方法实现。
第一个events示例,events-1.js:
运行events-1.js:
这是一个简单的示例,restaurant监听了两个事件"order"和"pay",顾客点菜和埋单时分别触发order和pay。
第二个events示例,假设点菜需要12个步骤,该怎么办?
events-2.js:
因为order有12个步骤,所以我们添加了12个order事件。
运行结果:
虽然成功完成了12个步骤,但是nodejs在添加第11个order时发出警告。这是因为events默认最大监听数量是10个(同一个事件,不同事件则没有限制)。
改进一下吧,events-3.js:
再看运行结果:
perfact !