日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Node核心模塊之Events

Node核心模塊之Events

來源:程序員人生   發布時間:2017-05-06 14:47:52 閱讀次數:6382次

Node核心模塊之Events

Node.js V6.9.4
Node.js核心API的大部份是圍繞1個異步事件驅動架構構建的,因此Events模塊是很多模塊的基礎,很多模塊都是基于Events模塊建立的,

例如:net.Server對象每當對等體連接到它時發出1個事件; fs.ReadStream在打開文件時發失事件; 每當數據可用于讀取時,流發失事件。

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

我們可以為1個事件對象注冊多個事件,可以為1個事件注冊多個監聽器

1.Events模塊基本用法


const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

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

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

2.同步與異步
* EventEmitter依照事件的注冊順序同步的調用監聽器,如果想切換到異步模式,使用setImmediate()或process.nextTick() *

const myEmitter = new MyEmitter();

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

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

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

3.Error events
* 當事件隊列中產生毛病或沒有為毛病事件注冊監聽器,則利用會拋出1個’error’事件,并且程序會退出 *

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

* 避免拋出毛病時,進程崩潰,可以為進程注冊1個uncaughtException事件,用來處理毛病,避免程序崩潰 *

const myEmitter = new MyEmitter();

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

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

* 最好實踐:應當始終為監聽器注冊1個’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經常使用API介紹
* const EventEmitter = require(‘events’) *
* const myEE = new EventEmitter() *

方法 作用
myEE.on(‘eventName’, listener) 為當前實例對象的某個事件注冊監聽器
myEE.emit(eventName[, …args]) 順序觸發當前實例對象某個事件的所有監聽器
myEE.once(eventName, listener) 設置當前實例對象的某個事件的監聽器只觸發1次
myEE.addListener(eventName, listener) 為當前實例對象的某個事件增加監聽器
myEE.eventNames() 返回當前實例對象的所有的注冊事件(按注冊順序)
myEE.getMaxListeners() 返回當前實例對象可以設置的最大監聽器數量
myEE.listenerCount(eventName) 返回當前實例對象的某個事件的監聽器數量
myEE.listeners(eventName) 以數組情勢返回當前實例對象的某個事件的所有監聽器
myEE.removeAllListeners([eventName]) 刪除當前對象的某個事件的所有監聽器
myEE.removeListener(eventName, listener) 刪除當前對象的某個事件的某個監聽器
myEE.setMaxListeners(n) 設置監聽器的最大數量
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 三级久久 | 91av电影在线观看 | 亚洲一区二区视频在线观看 | 亚洲一区视频 | 日韩国产 | 精品视频免费在线播放 | 激情免费网址 | 国产欧美久久久久久 | 国产午夜久久 | 亚洲色图25p | 欧美精品tv | 玖玖色资源 | 亚洲成人福利 | 亚洲综合国产 | 久久久久亚洲精品 | 欧美日韩高清 | 欧洲精品久久久 | 男人的av| 精品一区二区三区在线播放 | 精品三级久久久 | 精品一区二区三区免费观看 | 国产精品久久久一区麻豆最新章节 | 91福利国产在线观看菠萝蜜 | 久久久久久久久国产精品 | 欧美精品成人 | 久久99亚洲精品 | 91麻豆精品视频 | 亚洲精品视频自拍 | 国产精品国产三级国产专播品爱网 | 久热综合 | 亚洲国产视频一区 | 久久精品三级 | 国产一区二区免费看 | 日韩 国产 在线 | 男女免费网站 | 久久久噜噜噜久久中文字幕色伊伊 | 91小视频版在线观看www | 美女视频网站黄 | 国产伦精品一区二区三区 | 日韩一级精品视频在线观看 | 国产一区二区自拍视频 |