国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解nodejs中的process進程

2024-05-06 15:19:40
字體:
來源:轉載
供稿:網友

雖然node對操作系統做了很多抽象的工作,但是你還是可以直接和他交互,比如和系統中已經存在的進程進行交互,創建工作子進程。node是一個用于事件循環的線程,但是你可以在這個事件循環之外創建其他的進程(線程)參與工作。

  進程模塊

  process模塊允許你獲得或者修改當前node進程的設置,不想其他的模塊,process是一個全局進程(node主進程),你可以直接通過process變量直接訪問它。

  process實現了EventEmitter接口,exit方法會在當進程退出的時候執行。因為進程退出之后將不再執行事件循環,所有只有那些沒有回調函數的代碼才會被執行。在下面例子中,setTimeout里面的語句是沒有辦法執行到的。

process.on('exit', function () {  setTimeout(function () {    console.log('This will not run');  }, 100);  console.log('Bye.');});

  在你接觸node之后,你就會發現那些影響了主事件循環的異常會把整個node進程宕掉的。這會是相當嚴重的問題,所以process提供了另外一個有用的事件uncaughtException來解決這個問題,他會把異常抓取出來供你處理。

process.on('uncaughtException', function (err) {  console.log('Caught exception: ' + err);});setTimeout(function () {  console.log('This will still run.');}, 500);// Intentionally cause an exception, but don't catch it.nonexistentFunc();console.log('This will not run.');

   我們來看上面的例子,我們注冊了uncaughtException事件來捕捉系統異常。執行到nonexistentFunc()時,因為該函數沒有定義所以會拋出異常。因為javascript是解釋性的語言,nonexistentFunc()方法上面的語句不會被影響到,他下面的語句不會被執行。所以他的執行結果如下:

Caught exception: ReferenceError: nonexistentFunc is not defined

This will still run.

  我們再看一個例子。

var http = require('http');var server = http.createServer(function(req,res) {  res.writeHead(200, {});  res.end('response');  badLoggingCall('sent response');  console.log('sent response');});process.on('uncaughtException', function(e) {  console.log(e);});server.listen(8080);

   在這里例子中我們創建了一個web服務器,當處理完請求之后,我們會執行badLoggingCall()方法。因為這個方法不存在,所以會有異常拋出。但是我們注冊的uncaughtException事件會對異常做出處理,這樣服務器不會受到影響得以繼續運行。我們會在服務器端記錄錯誤日志。

[ReferenceError: badLoggingCall is not defined] 

   與當前進程交互

  node提供了一些process的屬性,如下:

process.version:包含當前node實例的版本號;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巴青县| 承德市| 惠州市| 荆门市| 扶沟县| 赤峰市| 巫山县| 奇台县| 宣恩县| 洛扎县| 稷山县| 松原市| 平果县| 沙坪坝区| 凤山市| 定边县| 三明市| 离岛区| 阜阳市| 耿马| 柘城县| 新民市| 醴陵市| 延长县| 台湾省| 精河县| 白河县| 望城县| 宝丰县| 江门市| 佛教| 鲁甸县| 临沭县| 迁西县| 额敏县| 壶关县| 许昌市| 常山县| 河曲县| 吉木萨尔县| 渭南市|