Node.js回調(diào)函數(shù)
Node.js異步編程的直接體現(xiàn)就是回調(diào)
異步編程依托于回調(diào)來(lái)實(shí)現(xiàn),但不能說(shuō)使用了回調(diào)后程序就異步化了。
回調(diào)函數(shù)在完成任務(wù)后就會(huì)被調(diào)用,Node使用了大量的回調(diào)函數(shù),Node所有API都支持回調(diào)函數(shù)
例如,我們可以一邊讀取文件,一邊執(zhí)行其他命令,我們將文件內(nèi)容作為回調(diào)函數(shù)的參數(shù)返回。這樣執(zhí)行代碼時(shí)就沒(méi)有阻塞或等待文件I/O操作。這就提高了Node.js的性能,可以處理大量的并發(fā)請(qǐng)求。
回調(diào)函數(shù)一般作為函數(shù)的最后一個(gè)參數(shù)出現(xiàn):
function foo1(name,age,callback){ }
function foo2(value,callback,callback2){ }
阻塞代碼實(shí)例:
創(chuàng)建一個(gè)文件input.txt,內(nèi)容如下:
菜鳥教程官網(wǎng)地址:www.runoob.com
創(chuàng)建main.js文件,代碼如下:
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序執(zhí)行結(jié)束!");
非阻塞代碼實(shí)例:
創(chuàng)建一個(gè)文件input.txt
####### 創(chuàng)建main.js文件,代碼如下:
$ node main js
//程序執(zhí)行結(jié)束!