node中的事件 events模組

2022-08-23 19:15:11 字數 2056 閱讀 4694

events模組匯入需要做三步:

//核心模組是乙個建構函式

const eventemitter = require("events");

//繼承

class myeventemitter extends eventemitter{};

//例項化

const myeventemitter = new myeventemitter();

//便於使用建構函式的prototype的原型方法。

方法:on() : 繫結事件(on事件可以繫結多個函式)

引數1:事件名稱

引數2:執行的函式

emit() : 觸發事件

引數1:事件名稱

引數2:需要傳遞的引數

once() : 只繫結一次事件

引數1:事件名稱

引數2:執行的函式

removelistener() : 移除指定事件

引數1:事件名稱

引數2:需要移除的函式

removealllisteners() : 移除所有事件

引數1:事件名稱

prependlistener() : 將事件放在佇列的最前面

引數1:事件名稱

引數2:執行的函式

function fn(val)

function fn1(val)

function fn2(val)

myeventemitter.on("handle",fn);//handle自己創造的事件名稱

myeventemitter.on("handle",fn1);

myeventemitter.prependlistener("handle",fn2);

3,哈哈哈

1,哈哈哈

2,哈哈哈

3,哈哈哈

1,哈哈哈

2,哈哈哈

// myeventemitter.once("handle",fn);

// myeventemitter.once("handle",fn1);

// myeventemitter.once("handle",fn2);

1,哈哈哈

2,哈哈哈

3,哈哈哈

"handle",fn2)

1,哈哈哈

2,哈哈哈

"handle");

空。myeventemitter.emit("handle","哈哈哈")

myeventemitter.emit("handle","哈哈哈")

off 如果有第二個引數則解綁第二個引數 如果沒有則解綁全部

封裝on,emit,off

原理:事件繫結乙個事件名稱對應多個事件函式 應此它們的關係是一對多的關係 資料型別採用物件的形式

key:val 因為函式有多個 所以val選用陣列

事件倉庫

eventlist =

繫結事件

on(eventname,cb){}

邏輯:第一步判斷當前事件是否存在 如果不存在 初始化一下 key: 然後在將cb push到資料中去即可

觸發事件

emit(eventname,params){}

邏輯:第一步判斷事件名稱是否存在 如果存在 遍歷陣列中的所以函式呼叫即可 如果params存在 將params傳遞函式中

解綁事件

off(eventname,cb){}

邏輯:第一步判斷事件名稱是否存在 如果存在 再次判斷第二個引數是否存在 如果存在將這個cb從當前陣列中移除

如果第二個引數不存在 清空資料

let eventlist = {};

//繫結事件

const $on=(eventname,cb)=>

eventlist[eventname].push(cb)

}//觸發事件

const $emit = (eventname,params)=>)}}

//解綁事件

const $off = (eventname,cb)=>else}}

nodejs中events模組的使用

講events之前我們先用js模擬實現乙個eventemitter類 原始碼 訂閱者集合 class eventemitter 訂閱機制 on name,newlistener this listener name push newlistener 發布機制 emit name let myemit...

node中的模組

node中乙個檔案就是乙個模組,使用exports和require來進行配置和呼叫。例如定義乙個hello模組 function hello name exports.hello hello main.js如下 var h require hello h.hello world 最後執行node m...

epoll wait的LT 和 ET事件處理模式

epoll對檔案描述操作有兩種預設方式 lt lever trigger and et edge trigger lt模式是epoll wait檢測到socket上有事件發生時,應用程式並不立即處理此事,epoll wait還會下西再次通知應用程式,直到時間被處理 et模式下epoll wait檢測...