多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > Node核心模塊之Events

Node核心模塊之Events

來(lái)源:程序員人生   發(fā)布時(shí)間:2017-05-06 14:47:52 閱讀次數(shù):6367次

Node核心模塊之Events

Node.js V6.9.4
Node.js核心API的大部份是圍繞1個(gè)異步事件驅(qū)動(dòng)架構(gòu)構(gòu)建的,因此Events模塊是很多模塊的基礎(chǔ),很多模塊都是基于Events模塊建立的,

例如:net.Server對(duì)象每當(dāng)對(duì)等體連接到它時(shí)發(fā)出1個(gè)事件; fs.ReadStream在打開(kāi)文件時(shí)發(fā)失事件; 每當(dāng)數(shù)據(jù)可用于讀取時(shí),流發(fā)失事件。

所有發(fā)失事件的對(duì)象都是EventEmitter類的實(shí)例。這些對(duì)象公然了1個(gè)EventEmitter.on()函數(shù),它允許1個(gè)或多個(gè)函數(shù)附加到對(duì)象發(fā)出的命名空間。

我們可以為1個(gè)事件對(duì)象注冊(cè)多個(gè)事件,可以為1個(gè)事件注冊(cè)多個(gè)監(jiān)聽(tīng)器

1.Events模塊基本用法


const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

myEmitter.on('event', () => {       //注冊(cè)1個(gè)名為'event'的事件
  console.log('an event occurred!');
});

//觸發(fā)名為'event'的事件
myEmitter.emit('event');  // => 'an event occurred!'    

2.同步與異步
* EventEmitter依照事件的注冊(cè)順序同步的調(diào)用監(jiān)聽(tīng)器,如果想切換到異步模式,使用setImmediate()或process.nextTick() *

const myEmitter = new MyEmitter();

myEmitter.on('event', (a, b) => {

  setImmediate(() => {
    console.log('this happens asynchronously');     // 該事件會(huì)異步觸發(fā)
  });
});

myEmitter.emit('event', 'a', 'b');

3.Error events
* 當(dāng)事件隊(duì)列中產(chǎn)生毛病或沒(méi)有為毛病事件注冊(cè)監(jiān)聽(tīng)器,則利用會(huì)拋出1個(gè)’error’事件,并且程序會(huì)退出 *

const myEmitter = new MyEmitter();
myEmitter.emit('error', new Error('whoops!'));  // 拋出毛病并且程序退出

* 避免拋出毛病時(shí),進(jìn)程崩潰,可以為進(jìn)程注冊(cè)1個(gè)uncaughtException事件,用來(lái)處理毛病,避免程序崩潰 *

const myEmitter = new MyEmitter();

process.on('uncaughtException', (err) => {
  console.log('whoops! there was an error');
});

//進(jìn)程不會(huì)崩潰
myEmitter.emit('error', new Error('whoops!'));  // => 'whoops! there was an error'

* 最好實(shí)踐:應(yīng)當(dāng)始終為監(jiān)聽(tīng)器注冊(cè)1個(gè)’error’事件 *

const myEmitter = new MyEmitter();

myEmitter.on('error', (err) => {
  console.log('whoops! there was an error');
});

myEmitter.emit('error', new Error('whoops!'));   // => 'whoops! there was an error'

4.Event經(jīng)常使用API介紹
* const EventEmitter = require(‘events’) *
* const myEE = new EventEmitter() *

方法 作用
myEE.on(‘eventName’, listener) 為當(dāng)前實(shí)例對(duì)象的某個(gè)事件注冊(cè)監(jiān)聽(tīng)器
myEE.emit(eventName[, …args]) 順序觸發(fā)當(dāng)前實(shí)例對(duì)象某個(gè)事件的所有監(jiān)聽(tīng)器
myEE.once(eventName, listener) 設(shè)置當(dāng)前實(shí)例對(duì)象的某個(gè)事件的監(jiān)聽(tīng)器只觸發(fā)1次
myEE.addListener(eventName, listener) 為當(dāng)前實(shí)例對(duì)象的某個(gè)事件增加監(jiān)聽(tīng)器
myEE.eventNames() 返回當(dāng)前實(shí)例對(duì)象的所有的注冊(cè)事件(按注冊(cè)順序)
myEE.getMaxListeners() 返回當(dāng)前實(shí)例對(duì)象可以設(shè)置的最大監(jiān)聽(tīng)器數(shù)量
myEE.listenerCount(eventName) 返回當(dāng)前實(shí)例對(duì)象的某個(gè)事件的監(jiān)聽(tīng)器數(shù)量
myEE.listeners(eventName) 以數(shù)組情勢(shì)返回當(dāng)前實(shí)例對(duì)象的某個(gè)事件的所有監(jiān)聽(tīng)器
myEE.removeAllListeners([eventName]) 刪除當(dāng)前對(duì)象的某個(gè)事件的所有監(jiān)聽(tīng)器
myEE.removeListener(eventName, listener) 刪除當(dāng)前對(duì)象的某個(gè)事件的某個(gè)監(jiān)聽(tīng)器
myEE.setMaxListeners(n) 設(shè)置監(jiān)聽(tīng)器的最大數(shù)量
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 最近最新中文字幕免费大全3 | 国产精品久久久久久久久久久威 | 国产欧美另类久久精品91 | 国产在线日本 | 成人精品美女隐私漫画 | 久久精品在线视频 | 中文在线免费视频 | 成人特级毛片 | 精品肉动漫资源在线观看 | 国产精品免费视频一区二区 | 亚洲国产精品久久综合 | 99久久精品免费看国产免费软件 | 成人国产亚洲 | 亚洲国产成人久久精品图片 | 久久精品免视看国产明星 | 手机看片福利在线 | 手机看片日韩国产 | 亚洲欧美日韩高清一区二区一 | 欧美野外多人交3 | 日本免费精品 | 国产婷婷一区二区在线观看 | 国产精品久久在线观看 | 欧美国产日韩1区俺去了 | 春色视频一区二区三区 | 禁视频网站在线观看漫画 | 国产三级短视频 | 一级毛片视频在线观看 | 亚洲国产欧美久久香综合 | 日本护士xxxx在线播放 | 欧美xxxx日本 | 色尼玛亚洲综合 | 天堂成人 | 欧洲黄色毛片 | 国产一区二区三区精品久久呦 | 尤物tv | 日韩久久中文字幕 | 欧美日本道免费一区二区三区 | 国产亚洲人成网站观看 | 成人中文字幕在线观看 | 欧美日本一道高清免费3区 欧美日本一道免费一区三区 | 边吃奶边添下面就爽 |