(八)nodejs循序渐进-事件驱动(进阶篇)
事件驅動程序
Node.js 使用事件驅動模型,當web server接收到請求,就把它關閉然后進行處理,然后去服務下一個web請求。
當這個請求完成,它被放回處理隊列,當?shù)竭_隊列開頭,這個結果被返回給用戶。
這個模型非常高效可擴展性非常強,因為 webserver 一直接受請求而不等待任何讀寫操作。(這也稱之為非阻塞式IO或者事件驅動IO)
在事件驅動模型中,會生成一個主循環(huán)來監(jiān)聽事件,當檢測到事件時觸發(fā)回調(diào)函數(shù)。
整個事件驅動的流程就是這么實現(xiàn)的,非常簡潔。有點類似于觀察者模式,事件相當于一個主題(Subject),而所有注冊到這個事件上的處理函數(shù)相當于觀察者(Observer)。
EventEmitter觸發(fā)器
大多數(shù) Node.js 核心 API 構建于慣用的異步事件驅動架構,其中某些類型的對象(又稱觸發(fā)器,Emitter)會觸發(fā)命名事件來調(diào)用函數(shù)(又稱監(jiān)聽器,Listener)。
例如 net.Server 會在每次有新連接時觸發(fā)事件 fs.ReadStream會在打開文件時觸發(fā)事件,stream會在數(shù)據(jù)可讀時觸發(fā)事件。
所有能觸發(fā)事件的對象都是 EventEmitter 類的實例。 這些對象有一個 eventEmitter.on() 函數(shù),用于將一個或多個函數(shù)綁定到命名事件上。。
當 EventEmitter 對象觸發(fā)一個事件時&#x
總結
以上是生活随笔為你收集整理的(八)nodejs循序渐进-事件驱动(进阶篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PaperNotes(16)-图神经网络
- 下一篇: (六)nodejs循序渐进-数据流和文件