node事件循環(huán)和process模塊實例分析
本文實例講述了node事件循環(huán)和process模塊。分享給大家供大家參考,具體如下:
1.node.js事件循環(huán)
node.js事件可以繼續(xù)插入事件,如果有事件就繼續(xù)執(zhí)行下去,每一次事件處理結(jié)束后等待下一個事件的發(fā)生;沒有要處理的事件了,那整個就結(jié)束了;
setTimeout插入一個 計時器事件,時間單位為毫秒;
// 插入一個事件,讓它多長(毫秒)時間以后執(zhí)行一次
setTimeout(function() {
console.log("set time out");
}, 3 * 1000); //3秒后執(zhí)行顯示 set time out
setInterval插入一個不斷循環(huán)的計時器事件;
// 計時器事件, 每隔一段事件觸發(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模塊用來與當(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的一個全局模塊 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 // 在啟動的時候,我們可以往程序里面?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在每次退出的時候,都會拋出一個exit這樣一個事件,如果我們用戶監(jiān)聽這個事件,那么
// 當(dāng)有exit事件發(fā)生的時候,我們之前設(shè)置的回掉函數(shù),將會被調(diào)用;
// process.on來監(jiān)聽事件
process.on("exit", function() {
console.log("now node exit!!!!");
});
uncaughtException事件 function(err){};
// 當(dāng)我們發(fā)生了一個未知的異常的時候,我們調(diào)用這個回掉函數(shù);
// node 停止處理當(dāng)前這個事件,繼續(xù)等待下一個事件的處理,不會整個退出,
// 服務(wù)器就不會隨意的奔潰
// 可以把這個錯誤,保存起來,方便我們?nèi)ゲ檎?
process.on("uncaughtException", function(err) {
console.log("uncaughtException called ", err);
});
// 當(dāng)我們的程序,如果運行的時候有異常,那么這個時候,我們可以通過捕獲異常,
// 如果說我們沒有捕獲的異常,這個uncaughtException
// 如果發(fā)生uncaughtException,node是會退出的;
// 沒有主動捕獲,所以javascript解釋器,他是不會繼續(xù)執(zhí)行的;
處理的時候遇到了異常,如果這個異常監(jiān)聽,那么就繼續(xù)處理下一個事件,否則直接停止退出node ;
3.process重要方法
progress.cwd; // 獲取當(dāng)前的工作目錄
progress.uptime // 獲取當(dāng)前進程運行的時間
progress.chdir // 設(shè)置當(dāng)前的工作目錄;
progress.nextTick // 下一次循環(huán)的時候調(diào)用;
// current work director 當(dāng)前的工作目錄
// ./ ---> C:\Home\workspace\node_js
process.chdir("C:\\Home\\workspace");
// 修改我們的工作目錄,工作目錄默認(rèn)你的node是在哪個目錄下啟動的,就是那個目錄為你的工作目錄
console.log(process.cwd()); //c:\Users\Administrator\Desktop
// while處理時間,進入等待時間之前調(diào)用,完成后,去事件里面來等待新的事件發(fā)生;
process.nextTick(function() {
console.log("nextTick");
});
希望本文所述對大家node.js程序設(shè)計有所幫助。
相關(guān)文章
用NodeJS實現(xiàn)批量查詢地理位置的經(jīng)緯度接口
最近要實現(xiàn)一個顯示各個城市信息的功能,后臺一看包含一堆城市的excel,發(fā)現(xiàn)不僅有每個省的直轄市,還有二三線等的城市,數(shù)量還不少,一個個去查還挺浪費時間的,那為什么不寫個腳本去實現(xiàn)批量查詢呢。2016-08-08
從零學(xué)習(xí)node.js之模塊規(guī)范(一)
Node.js是一個基于谷歌瀏覽器JavaScript執(zhí)行環(huán)境建立的一個平臺,讓JavaScript可以脫離客戶端瀏覽器運行,讓 JavaScript具有服務(wù)器語言的能力。從本文開始我們進行學(xué)習(xí)node.js,這篇文章主要介紹的是node.js中模塊規(guī)范的相關(guān)資料,需要的朋友可以參考下。2017-02-02

