新聞中心
這篇文章主要介紹“Node.js中的非阻塞I/O舉例分析”,在日常操作中,相信很多人在Node.js中的非阻塞I/O舉例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Node.js中的非阻塞I/O舉例分析”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
在興賓等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè)公司,興賓網(wǎng)站建設(shè)費用合理。

如何理解NodeJs的非阻塞I/O
1、I/O:即 Input/output 指一個系統(tǒng)的輸入和輸出
2 、非阻塞和阻塞的主要區(qū)別在:在接收輸入到輸出結(jié)果之間的過程中,能否繼續(xù)接收其他的輸入。
例子:
比如說:出去吃飯
出去吃飯通常有兩種方式:
1 去食堂吃:排隊打飯
[排隊] - [等前面的人打飯 ] - [自己打飯 ] - [吃飯]
2 去餐廳吃
[坐下 ] - [ 點菜] - [ 等待] - [ 吃飯]
針對這兩種吃飯方式而言:
1 食堂吃:對于打飯人員而言,必須等前面一個人打完了,才會打下一個人的飯,這個過程就是阻塞模式
2 餐廳吃:去餐廳吃飯,服務(wù)員在給你點完餐之后,回繼續(xù)處理下一個人的點餐需求,等到你的飯好了,再將飯給你送過來,對于服務(wù)員而言,這個過程就是非阻塞的過程
理解非阻塞I/O的要點
1 確定一個進行I/O操作的系統(tǒng),比如說:在上面的打飯例子里面,進行I/O的系統(tǒng)就是服務(wù)人員。
2 在系統(tǒng)進行I/O操作的過程中能否再進行其他的I/O
代碼演示
示例代碼里面我們引入了一個庫 glob,這個庫主要是用來查找匹配條件的文件。 詳情請看 https://www.npmjs.com/package/glob
首先,我們先使用glob提供的同步的方法來讀取文件
const glob = require("glob");
let result = null;
result = glob.sync(__dirname + "/**/*");
console.log(result);結(jié)果為一個文件數(shù)組:

我們來看一下這個同步操作的執(zhí)行時間:
const glob = require("glob");
let result = null;
console.time("glob");
result = glob.sync(__dirname + "/**/*");
console.timeEnd("glob");結(jié)果:

一個讀取文件的操作,會令進程阻塞33毫秒,這是不能接受的!
接下來,我們使用異步的方式去讀取文件
let result2 = null;
console.time("glob2");
glob(__dirname + "/**/*", (err, res) => {
console.log("glob over");
});
console.timeEnd("glob2");結(jié)果:

執(zhí)行異步讀取文件一共花了4毫秒,并且在執(zhí)行異步讀取文件的過程中我們也能進行其他的操作。
到此,關(guān)于“Node.js中的非阻塞I/O舉例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
文章標(biāo)題:Node.js中的非阻塞I/O舉例分析
鏈接分享:http://www.dlmjj.cn/article/poidhc.html


咨詢
建站咨詢
