本文概述
- 阻止代码示例
- 非阻塞代码示例
在Node.js中, 一旦文件I / O完成, 它将调用回调函数。因此, 没有阻塞或等待文件I / O。这使Node.js具有高度可伸缩性, 因为它可以处理大量请求, 而无需等待任何函数返回结果。
阻止代码示例 按着这些次序:
创建一个名为input.txt的文本文件, 其内容如下:
srcmini is an online platform providing self learning tutorials on
different technologies, in a very simple language.
使用以下代码创建一个名为main.js的JavaScript文件:
var fs = require("fs");
var data = http://www.srcmini.com/fs.readFileSync('input.txt');
console.log(data.toString());
console.log("Program Ended");
打开Node.js命令提示符并执行以下代码。
node main.js
文章图片
非阻塞代码示例 按着这些次序:
创建一个名为input.txt的文本文件, 其内容如下:
srcmini is an online platform providing self learning tutorials on
different technologies, in a very simple language.
使用以下代码创建一个名为main.js的JavaScript文件:
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("Program Ended");
打开Node.js命令提示符并执行以下代码。
node main.js
文章图片
你可以看到上面的两个示例说明了阻塞和非阻塞调用的概念。第一个示例显示程序阻塞, 直到它读取文件, 然后在第二个示例中才继续终止程序, 程序不等待文件读取, 而是继续打印” Program Ended” 并同时打印程序无阻碍地继续读取文件。 【Node.js使用回调】因此, 可以说, 阻塞程序是按顺序执行的。从程序的角度来看, 在块程序中实现逻辑也更容易。但是非阻塞程序不会按顺序执行, 因此, 如果程序需要使用任何要处理的数据, 则应将其保留在同一块中以使其顺序执行。
推荐阅读
- Node.js子进程解析
- Node.js缓冲区Buffer
- Node.js断言测试
- Linux/Ubuntu/CentOS安装Node.js详细步骤
- Windows安装Node.js详细步骤
- Node.js文件、目录操作实例
- node常用内置模块(events)
- 配置|node、gulp和npm的版本兼容问题
- Node.js 18 新特性解读