1、参考:Node.js 回调函数 | 菜鸟教程
2、实践截图:
2.1、阻塞代码实例
var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());
console.log("程序执行结束!");
2.2、非阻塞代码实例
var fs = require("fs");fs.readFile('input.txt', function (err, data) {if (err) return console.error(err);console.log(data.toString());
});console.log("程序执行结束!");
2.3、回调地狱(Callback Hell)
var fs = require("fs");fs.readFile('file1.txt', 'utf8', (err, data1) => {if (err) {console.error('Error reading file1:', err);return;}fs.readFile('file2.txt', 'utf8', (err, data2) => {if (err) {console.error('Error reading file2:', err);return;}fs.readFile('file3.txt', 'utf8', (err, data3) => {if (err) {console.error('Error reading file3:', err);return;}console.log('Data from all files:', data1, data2, data3);});});
});console.log("程序执行结束!");
2.4、使用 async/await
const fs = require('fs').promises;async function readFiles() {try {const data1 = await fs.readFile('file1.txt', 'utf8');const data2 = await fs.readFile('file2.txt', 'utf8');const data3 = await fs.readFile('file3.txt', 'utf8');console.log('Data from all files:', data1, data2, data3);} catch (err) {console.error('Error reading files:', err);}
}readFiles();console.log("程序执行结束!");
2.5、使用 promises
const fs = require('fs').promises;fs.readFile('file1.txt', 'utf8').then(data1 => {console.log('Data from file1:', data1);return fs.readFile('file2.txt', 'utf8');}).then(data2 => {console.log('Data from file2:', data2);return fs.readFile('file3.txt', 'utf8');}).then(data3 => {console.log('Data from file3:', data3);}).catch(err => {console.error('Error reading files:', err);});console.log("程序执行结束!");