首先 node 是單進程單線程的應用程序,這取決與 js 設(shè)計之初降低復雜度的考量。
但是得益于 chrome V8 引擎提供的異步執(zhí)行毀掉接口,從而可以處理并發(fā)。
Node.js 所有的非阻塞 I/O 操作在完成時都會發(fā)送一個事件到事件隊列。
這一事件機制使用設(shè)計模式中的觀察者模式實現(xiàn),使用事件驅(qū)動模型,當 web server 接到請求,就把它關(guān)閉后進行處理,隨后去服務下一個 web 請求。當這個請求完成,他就會被放回處理隊列,當?shù)竭_隊列頭,就返回給用戶。
我們可以通過 Node.js 內(nèi)置的 events 模塊,實例化 EventEmitter 來綁定和監(jiān)聽事件。
實例化 eventEmitter 對象
EventEmitter 的每個事件由一個事件名和若干個參數(shù)組成,事件名是一個字符串,通常表達一定的語義。對于每個事件,EventEmitter 支持 若干個事件監(jiān)聽器。
當事件觸發(fā)時,注冊到這個事件的事件監(jiān)聽器被依次調(diào)用,事件參數(shù)作為回調(diào)函數(shù)參數(shù)傳遞。
依次調(diào)用事件
上例中,emitter 為事件 someEvent 注冊了兩個事件監(jiān)聽器,然后觸發(fā)了 someEvent 事件。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者





暫無評論,快來評論吧!