node事件循環(huán)和process模塊實(shí)例分析
本文實(shí)例講述了node事件循環(huán)和process模塊。分享給大家供大家參考,具體如下:
1.node.js事件循環(huán)
node.js事件可以繼續(xù)插入事件,如果有事件就繼續(xù)執(zhí)行下去,每一次事件處理結(jié)束后等待下一個(gè)事件的發(fā)生;沒(méi)有要處理的事件了,那整個(gè)就結(jié)束了;
setTimeout插入一個(gè) 計(jì)時(shí)器事件,時(shí)間單位為毫秒;
// 插入一個(gè)事件,讓它多長(zhǎng)(毫秒)時(shí)間以后執(zhí)行一次 setTimeout(function() { console.log("set time out"); }, 3 * 1000); //3秒后執(zhí)行顯示 set time out setInterval插入一個(gè)不斷循環(huán)的計(jì)時(shí)器事件; // 計(jì)時(shí)器事件, 每隔一段事件觸發(fā)一次, time的單位是毫秒 setInterval(function () { console.log("get time doing"); }, 2 * 1000); // 每間隔2秒調(diào)用一次 //結(jié)果為: //get time doing //get time doing //get time doing //....
2.process模塊屬性和事件
process模塊用來(lái)與當(dāng)前進(jìn)程互動(dòng),獲取相關(guān)操作系統(tǒng)相關(guān)信息;process是全局變量不需要require導(dǎo)入模塊;
屬性:process.pid, process.version, process.platform, process.title,process.argv, process.execPath, process.stdout, process.stdin, process.stderr, process.env
// process是node的一個(gè)全局模塊 console.log(process.pid); //11544 console.log(process.version); //V8.9.0 console.log(process.platform); //WIN32 console.log(process.title); //D:\Program Files\nodejs\node.exe // 在啟動(dòng)的時(shí)候,我們可以往程序里面?zhèn)魅雲(yún)?shù), //參數(shù)都是字符串 console.log(process.argv); //結(jié)構(gòu)為數(shù)組 //Array(2) ["D:\Program Files\nodejs\node.exe", "c:\Users\Administrator\Desktop\main1.js"]
exit事件, process.on()
// 當(dāng)我們的node在每次退出的時(shí)候,都會(huì)拋出一個(gè)exit這樣一個(gè)事件,如果我們用戶(hù)監(jiān)聽(tīng)這個(gè)事件,那么 // 當(dāng)有exit事件發(fā)生的時(shí)候,我們之前設(shè)置的回掉函數(shù),將會(huì)被調(diào)用; // process.on來(lái)監(jiān)聽(tīng)事件 process.on("exit", function() { console.log("now node exit!!!!"); }); uncaughtException事件 function(err){}; // 當(dāng)我們發(fā)生了一個(gè)未知的異常的時(shí)候,我們調(diào)用這個(gè)回掉函數(shù); // node 停止處理當(dāng)前這個(gè)事件,繼續(xù)等待下一個(gè)事件的處理,不會(huì)整個(gè)退出, // 服務(wù)器就不會(huì)隨意的奔潰 // 可以把這個(gè)錯(cuò)誤,保存起來(lái),方便我們?nèi)ゲ檎? process.on("uncaughtException", function(err) { console.log("uncaughtException called ", err); }); // 當(dāng)我們的程序,如果運(yùn)行的時(shí)候有異常,那么這個(gè)時(shí)候,我們可以通過(guò)捕獲異常, // 如果說(shuō)我們沒(méi)有捕獲的異常,這個(gè)uncaughtException // 如果發(fā)生uncaughtException,node是會(huì)退出的; // 沒(méi)有主動(dòng)捕獲,所以javascript解釋器,他是不會(huì)繼續(xù)執(zhí)行的;
處理的時(shí)候遇到了異常,如果這個(gè)異常監(jiān)聽(tīng),那么就繼續(xù)處理下一個(gè)事件,否則直接停止退出node ;
3.process重要方法
progress.cwd; // 獲取當(dāng)前的工作目錄
progress.uptime // 獲取當(dāng)前進(jìn)程運(yùn)行的時(shí)間
progress.chdir // 設(shè)置當(dāng)前的工作目錄;
progress.nextTick // 下一次循環(huán)的時(shí)候調(diào)用;
// current work director 當(dāng)前的工作目錄 // ./ ---> C:\Home\workspace\node_js process.chdir("C:\\Home\\workspace"); // 修改我們的工作目錄,工作目錄默認(rèn)你的node是在哪個(gè)目錄下啟動(dòng)的,就是那個(gè)目錄為你的工作目錄 console.log(process.cwd()); //c:\Users\Administrator\Desktop // while處理時(shí)間,進(jìn)入等待時(shí)間之前調(diào)用,完成后,去事件里面來(lái)等待新的事件發(fā)生; process.nextTick(function() { console.log("nextTick"); });
希望本文所述對(duì)大家node.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng)
這篇文章主要介紹了NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-04-04用NodeJS實(shí)現(xiàn)批量查詢(xún)地理位置的經(jīng)緯度接口
最近要實(shí)現(xiàn)一個(gè)顯示各個(gè)城市信息的功能,后臺(tái)一看包含一堆城市的excel,發(fā)現(xiàn)不僅有每個(gè)省的直轄市,還有二三線等的城市,數(shù)量還不少,一個(gè)個(gè)去查還挺浪費(fèi)時(shí)間的,那為什么不寫(xiě)個(gè)腳本去實(shí)現(xiàn)批量查詢(xún)呢。2016-08-08Node.js API詳解之 tty功能與用法實(shí)例分析
這篇文章主要介紹了Node.js API詳解之 tty功能與用法,結(jié)合實(shí)例形式分析了Node.js API中tty的基本功能、用法及終端操作相關(guān)使用技巧,需要的朋友可以參考下2020-04-04從零學(xué)習(xí)node.js之模塊規(guī)范(一)
Node.js是一個(gè)基于谷歌瀏覽器JavaScript執(zhí)行環(huán)境建立的一個(gè)平臺(tái),讓JavaScript可以脫離客戶(hù)端瀏覽器運(yùn)行,讓 JavaScript具有服務(wù)器語(yǔ)言的能力。從本文開(kāi)始我們進(jìn)行學(xué)習(xí)node.js,這篇文章主要介紹的是node.js中模塊規(guī)范的相關(guān)資料,需要的朋友可以參考下。2017-02-02