Node.js异步变成的直接表现就是回调。
异步编程依托于回调来完成,但不能说使用了回调后递次就异步化了。
回调函数在完成任务后就会被挪用,Node使用了大批的回调函数,Node一切的APi都支撑回调函数。
比方,我们i 遍读文件,一边实行其他敕令,在文件读取完成后,我们将文件内容作为回调函数都参数返回。
如许在实行代码时就没有壅塞或守候文件I/O操纵。这就大大提高了Node都机能,能够处置惩罚大批的并发要求。
接下来写一个壅塞代码实例
建立一个文件input.txt,内容以下
进修前端学问,纪录笔记 ,来segmentfault。
建立main.js 文件,代码以下:
const fs = require("fs") //fs模块用于对体系文件及目次举行读写操纵。
const data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("实行递次完毕")
非壅塞代码实例
const fs = require("fs") //fs模块用于对体系文件及目次举行读写操纵。
fs.readFile('input.txt',(err, data) => {
if(err) {
console.log(err)
}else{
console.log(data.toString())
}
})
console.log("递次实行完毕!")
以上两个实例写出了壅塞与非壅塞的差别。第一个实例在文件读取完后才实行完递次。
第二个实例我们不须要守候文件读取完,如许就能够在读取文件时同时实行接下来的代码,大大提高了递次的机能。
因而,壅塞是按递次实行的,而非壅塞是不须要按递次的,所以假如须要处置惩罚回调函数的参数,我们就须要写在回调函数内。