什么是blocking?
举个例子
读取一个txt文本到网页。
先创建一个文本吧,起名"input.txt" 文本内容‘hello,world’
node如何读取本地文本?看这里
fs | Node.js API 文档
如下require("fs")表示引进fs模块,就是文件处理模块。并保存到txt变量里。
之后利用readFileSync()函数读取文本,参数就是文件路径。
data.toString()把缓存的数据读出来成文字形式
blocking
var txt = require("fs");
var txt = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束!");
将上述文件保存为main.js
在终端执行
node main.js
结果是
Hello world!
程序执行结束!
non-blocking
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");
同理执行
结果
程序执行结束!
Hello world!
对比
blocking实例在文件读取完后才执行完程序。
nonblocking实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。