Node.js 事件循環(huán)詳解及實(shí)例
Node.js 事件循環(huán)詳解及實(shí)例
- Node.js 是單進(jìn)程單線程應(yīng)用程序,但是通過(guò)事件和回調(diào)支持并發(fā),所以性能非常高。
- Node.js 的每一個(gè) API 都是異步的,并作為一個(gè)獨(dú)立線程運(yùn)行,使用異步函數(shù)調(diào)用,并處理并發(fā)。
- Node.js 基本上所有的事件機(jī)制都是用設(shè)計(jì)模式中觀察者模式實(shí)現(xiàn)。
- Node.js 單線程類似進(jìn)入一個(gè)while(true)的事件循環(huán),直到?jīng)]有事件觀察者退出,每個(gè)異步事件都生成一個(gè)事件觀察者,如果有事件發(fā)生就調(diào)用該回調(diào)函數(shù).
Node.js 有多個(gè)內(nèi)置的事件,我們可以通過(guò)引入 events 模塊,并通過(guò)實(shí)例化 EventEmitter 類來(lái)綁定和監(jiān)聽(tīng)事件,如下實(shí)例:
// 引入 events 模塊
var events = require('events');
// 創(chuàng)建 eventEmitter 對(duì)象
var eventEmitter = new events.EventEmitter();
// 創(chuàng)建事件處理程序
var connectHandler = function connected() {
console.log(1);
// 觸發(fā) data_received 事件
eventEmitter.emit('data_received');
}
// 綁定 connection 事件處理程序
eventEmitter.on('connection', connectHandler);
// 使用匿名函數(shù)綁定 data_received 事件
eventEmitter.on('data_received', function(){
console.log(2);
});
// 觸發(fā) connection 事件
eventEmitter.emit('connection');
console.log(3);
在 Node 應(yīng)用程序中,執(zhí)行異步操作的函數(shù)將回調(diào)函數(shù)作為最后一個(gè)參數(shù), 回調(diào)函數(shù)接收錯(cuò)誤對(duì)象作為第一個(gè)參數(shù)。
var fs = require("fs")
fs.readFile('input.txt',function(err,data){
if(err)
console.log(err)
else
console.log(data.toString())
})
console.log("程序執(zhí)行完成")
如有疑問(wèn),請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- node.js中對(duì)Event Loop事件循環(huán)的理解與應(yīng)用實(shí)例分析
- 深入淺析Node.js 事件循環(huán)、定時(shí)器和process.nextTick()
- 實(shí)例分析JS與Node.js中的事件循環(huán)
- 深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
- 深入淺析Node.js 事件循環(huán)
- Node.js事件循環(huán)(Event Loop)和線程池詳解
- 小結(jié)Node.js中非阻塞IO和事件循環(huán)
- 我的Node.js學(xué)習(xí)之路(三)--node.js作用、回調(diào)、同步和異步代碼 以及事件循環(huán)
- 詳解node.js 事件循環(huán)
相關(guān)文章
Node.js?中的服務(wù)器相關(guān)概念(常見(jiàn)的服務(wù)器任務(wù))
Node.js?中,服務(wù)器的創(chuàng)建與管理是非常重要的內(nèi)容,Node.js?的非阻塞?I/O?特性使得它特別適合處理高并發(fā)的請(qǐng)求,本文將介紹一些與?Node.js?服務(wù)器相關(guān)的基本概念,包括?HTTP?服務(wù)器、請(qǐng)求和響應(yīng)、路由、以及如何處理常見(jiàn)的服務(wù)器任務(wù),感興趣的朋友一起看看吧2025-04-04
使用node.js實(shí)現(xiàn)接口步驟詳細(xì)記錄
這篇文章主要給大家介紹了關(guān)于使用node.js實(shí)現(xiàn)接口步驟的相關(guān)資料,對(duì)于剛開(kāi)始不會(huì)node寫接口和調(diào)用接口,可以通過(guò)這個(gè)清晰的初步了解到整個(gè)過(guò)程,下面需要的朋友可以參考下2023-03-03
jwt在node中的應(yīng)用實(shí)踐(安裝配置封裝)
這篇文章主要為大家介紹了jwt在node中的應(yīng)用實(shí)踐包括安裝配置封裝,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
nodejs如何獲取當(dāng)前連接的網(wǎng)絡(luò)ip
這篇文章主要介紹了nodejs如何獲取當(dāng)前連接的網(wǎng)絡(luò)ip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
在Linux系統(tǒng)上更新Node.js到最新版本的3種方法小結(jié)
這篇文章主要介紹了在Linux系統(tǒng)上更新Node.js到最新版本的3種方法,使用NVM,使用NPM,用二進(jìn)制包更新Node.js,文中有詳解更新方法,需要的朋友可以參考下2023-09-09
Node.js編寫爬蟲(chóng)的基本思路及抓取百度圖片的實(shí)例分享
這篇文章主要介紹了Node.js編寫爬蟲(chóng)的基本思路及抓取百度圖片的實(shí)例分享,其中作者提到了需要特別注意GBK轉(zhuǎn)碼的轉(zhuǎn)碼問(wèn)題,需要的朋友可以參考下2016-03-03

