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

首頁 > 編程 > JavaScript > 正文

小結Node.js中非阻塞IO和事件循環

2019-11-20 14:07:39
字體:
來源:轉載
供稿:網友

  學習和使用Node.js已經有兩個月,使用express結合mongoose寫了一個web應用和一套RESTful web api,回過頭來看Node.js官網首頁對Node.js的介紹:Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.那么其中的non-blocking I/O model 意味著什么呢?

非阻塞的IO模型

  首先,IO操作無疑是耗時的,當服務器端接收到大量請求時,為每一個請求創建進程或線程的同時,也增加了額外的內存開銷,也可能浪費更多的時間資源。

  由于Node.js是事件驅動的,于是它使用了事件循環來解決IO操作帶來的瓶頸問題。在Node.js中,一個IO操作通常會帶有一個回調函數,當IO操作完成并返回時,就會調用這個回調函數,而主線程則繼續執行接下來的代碼。簡單的用一個例子來說明這個問題:

request('http://www.google.com', function(error, response, body) {   console.log(body);}); console.log('Done!');

  這段代碼的意思是向'http://www.google.com'發出請求,當請求返回這則調用回調函數輸出響應信息。由于Node.js的運行機制,這段代碼運行后,會立即在控制臺輸出'Done!',然后一段時間后再輸出響應的信息。

事件循環 event loop

  接下來,來討論下事件循環的機制。首先說說調用

主站蜘蛛池模板: 宜丰县| 诸暨市| 宁河县| 娄底市| 泰安市| 荆门市| 榕江县| 自治县| 邓州市| 梅州市| 长丰县| 新宁县| 运城市| 象山县| 铜梁县| 溧水县| 高唐县| 左贡县| 崇明县| 都兰县| 靖安县| 澄迈县| 哈巴河县| 江门市| 石楼县| 长岛县| 确山县| 禄丰县| 白朗县| 蒲城县| 徐闻县| 将乐县| 涡阳县| 宁河县| 乃东县| 高清| 灵寿县| 图们市| 厦门市| 新建县| 买车|