node.js異步編程的直接提現(xiàn)就是回調(diào)疫鹊。我們可以異步讀取文件狡刘,讀取文件完成后淀歇,將文件作為回調(diào)參數(shù)返回,這樣就不會阻塞程序狼电,可以處理大量的并發(fā)請求。
廢話不多說弦蹂,先來一個阻塞代碼的實例肩碟。首先創(chuàng)建一個txt的文檔,隨意輸入點什么凸椿,我輸入的是“你好嗎”三個字削祈,這里就不創(chuàng)建了。
然后創(chuàng)建main.js文件,代碼如下:
var fs=require('fs');
var data=fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序執(zhí)行結(jié)束!");
在vim執(zhí)行髓抑,
$ node main.js
你好嗎咙崎?
程序執(zhí)行結(jié)束!
再來一個非阻塞代碼實例:
創(chuàng)建main.js文件,內(nèi)容如下:
var fs=require("fs");
fs.readFile('input.txt',function (err,data) {
if (err) return console.error(err);
console.log(data.toString());
})
console.log("程序執(zhí)行結(jié)束!");
第一個實例是必須文件讀取完才能執(zhí)行程序吨拍,第二個是不需要等待文件讀取完叙凡。因此,阻塞是按順序執(zhí)行的密末,而非阻塞是不需要按順序的