📜  Node.js 回调概念

📅  最后修改于: 2022-05-13 01:56:18.957000             🧑  作者: Mango

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()函数是异步的,控制立即返回到程序中的下一条指令,同时该函数在后台继续运行。传递一个回调函数,当后台运行的任务完成时调用该函数。
输出: