Node.js回調(diào)函數(shù)
Node.js異步編程的直接體現(xiàn)就是回調(diào)
異步編程依托于回調(diào)來實現(xiàn),但不能說使用了回調(diào)后程序就異步化了须床。
回調(diào)函數(shù)在完成任務(wù)后就會被調(diào)用,Node使用了大量的回調(diào)函數(shù),Node所有API都支持回調(diào)函數(shù)
例如岭埠,我們可以一邊讀取文件裹刮,一邊執(zhí)行其他命令音榜,我們將文件內(nèi)容作為回調(diào)函數(shù)的參數(shù)返回。這樣執(zhí)行代碼時就沒有阻塞或等待文件I/O操作捧弃。這就提高了Node.js的性能赠叼,可以處理大量的并發(fā)請求。
回調(diào)函數(shù)一般作為函數(shù)的最后一個參數(shù)出現(xiàn):
function foo1(name,age,callback){ }
function foo2(value,callback,callback2){ }
阻塞代碼實例:
創(chuàng)建一個文件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é)束!");
非阻塞代碼實例:
創(chuàng)建一個文件input.txt
####### 創(chuàng)建main.js文件买鸽,代碼如下:
$ node main js
//程序執(zhí)行結(jié)束涧郊!