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檢測...