小需求:异步从三个文件中读取text内容,并异步放到data.js中
1.在桌面新建一个文件夹并命名为“异步”,在vscode中打开文件夹,新建下图目录结构,三个文本文件写入text内容。
2.编写controller控制文件
const fs = require("fs")
const path = require("path")
let pathName1 = path.join(__dirname, "files", "1.text");
let pathName2 = path.join(__dirname, "files", "2.text");
let pathName3 = path.join(__dirname, "files", "3.text");
let pathName4 = path.join(__dirname, "files", "data.text");
fs.readFile(pathName1, "utf-8", (error1, data1) => {
if (error1) {
console.log("error1")
return
}
//如果1.text读取成功了就继续读取2.text
fs.readFile(pathName2, "utf-8", (error2, data2) => {
if (error2) {
console.log("error2")
return
}
//如果2.text读取成功了就继续读取3.text
fs.readFile(pathName3, "utf-8", (error3, data3) => {
if (error3) {
console.log("error3")
return
}
//如果3.text读取成功了就打印
console.log(data1 + data2 + data3)
let str1 = data1 + data2 + data3
fs.writeFile(pathName4, str1, "utf-8", (error4) => {
if (error4) {
console.log("error4")
return
}
console.log("finnished")
})
})
})
})
3.运行node controller.js
需求可以完成,但是写出了回调地狱
回调地狱不是bug,没有逻辑和语法问题,但影响代码的可读性和可维护性。优化方向就是把异步代码从外观上同步化。