說到Node.js,大家大概率聽過一堆讓人頭暈的專有名詞
關於異步,主要是事件循環和**非阻塞I/O,**正式因為這兩點Node.js 才能稱作高效能。
因此搞清楚Node.js 的非同步機制和使用方法是很重要的
阻塞I/O 和非阻塞I/O 的區別就在於系統接收輸入到輸出的時間,能不能接收其他輸入
#對於顧客/點菜人員來說
把食堂阿姨、服務生比作軟體系統
輸入= 點菜
輸出= 端菜
#【推薦學習:《nodejs 教學》】
例如: 一個開發者在論壇上提出了一個問題: "這個Node.js 問題怎麼解決? 在線等,急" .
阻塞I/O 的情況是-> 他一直等待其他人回答,當其他人回答後,他再去做其他的事。
非阻塞I/O 的情況就是-> 他去做其他的事,過一段時間後再回來看答案
小芳做家務,需要做如下事情:
請設計一個巧妙合理的順序,使小芳花最少的時間完成這些事
#注意點:
const glob = require("glob"); var result = null; console.time("glob"); // 获取目下的文件和文件名 result = glob.sync(__dirname + "/**/*"); console.timeEnd("glob"); console.log(result);
列印出以下結果
可以看到,需要花費30 毫秒的等待時間
才能拿到結果
從上面的程式碼可以得到,
阻塞I/O 有一個等待時間,在執行過程中不可以執行其他的事情
const glob = require("glob"); var result = null; console.time("glob"); // 获取目下的文件和文件名 glob(__dirname + "/**/*", function (err, res) { result = res; console.log("got result"); }); console.timeEnd("glob"); console.log(1 + 1);
列印出以下結果
glob: 3.198ms 2 got result
從上面的程式碼可以得出,非阻塞I/O 減少了等待時間,在執行過程中也可以執行其他的事情
更多程式相關知識,請造訪:程式設計入門! !
以上是深入了解Node.js中的非阻塞 I/O的詳細內容。更多資訊請關注PHP中文網其他相關文章!