本文概述
回调是函数的异步等效项。在每个任务完成时调用它。在Node.js中, 通常使用回调。 Node的所有API均以支持回调的方式编写。例如:函数开始读取文件时, 它将立即将控件返回到执行环境, 以便可以执行下一条指令。
在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 = 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”并同时打印程序无阻碍地继续读取文件。
因此, 可以说, 阻塞程序是按顺序执行的。从程序的角度来看, 在块程序中实现逻辑也更容易。但是非阻塞程序不会按顺序执行, 因此, 如果程序需要使用任何要处理的数据, 则应将其保留在同一块中以使其顺序执行。
评论前必须登录!
注册