Node.js 回调概念
回调是在任务完成时调用的函数,因此有助于防止任何类型的阻塞,回调函数允许其他代码同时运行。回调在任务完成时被调用,并且是函数的异步等价物。使用回调概念,Node.js 可以处理大量请求,而无需等待任何函数返回结果,这使得 Node.js 具有高度可扩展性。例如:在 Node.js 中,当一个函数开始读取文件时,它会立即将控制权返回给执行环境,以便执行下一条指令。一旦文件 I/O 完成,回调函数将被调用以避免阻塞或等待文件 I/O。
示例 1:在 Node.js 中同步读取文件的代码(阻塞代码)。创建一个包含以下内容的文本文件inputfile1.txt :
Hello Programmer!!!
Learn NodeJS with GeeksforGeeks
使用以下代码创建一个 sync.js 文件:
// Write JavaScript code
var fs = require("fs");
var filedata = fs.readFileSync('inputfile1.txt');
console.log(filedata.toString());
console.log("End of Program execution");
说明:加载fs库以处理文件系统相关操作。 readFileSync()函数是同步的,并且会阻止执行直到完成。该函数阻塞程序,直到它读取文件,然后才继续结束程序
输出:
示例 2:在 Node.js 中异步读取文件的代码(非阻塞代码)。创建具有以下内容的文本文件inputfile1.txt 。
Hello Programmer!!!
Learn NodeJS with GeeksforGeeks
使用以下代码创建 async.js 文件:
// Write a JavaScript code
var fs = require("fs");
fs.readFile('inputfile1.txt', function (ferr, filedata) {
if (ferr) return console.error(ferr);
console.log(filedata.toString());
});
console.log("End of Program execution");
说明:加载fs库以处理文件系统相关操作。 readFile()函数是异步的,控制立即返回到程序中的下一条指令,同时该函数在后台继续运行。传递一个回调函数,当后台运行的任务完成时调用该函数。
输出: