nodeJS中回调地域案例思考题
需求:现在存在三个文件 1.txt 2.txt 3.txt
每个文件里面有一个字符。使用:fs.readFile(异步) 顺序读取
1.txt 2.txt 3.txt 里面的内容,然后组成 一段字符串 把这个字符串写入到 data.txt 文件中。
编写思路:
- 1、引入path内置模块和fs文件系统模块;
- 2、读取到三个文本的路径和写入数据模块的路径;
- 3、利用fs.readFiles()方法读取路径文本保存的内容,题目要求使用异步方法利用嵌套关系依次读取数据内容,数据读取成功获得data参数;
- 4、利用拼接字符串的方法汇总读入数据;
- 5、利用fs.writeFile()方法写入数据到指定的路径当中。运行成功数据写入成功
注意点: 回调函数参数写反导致内容输出失败,注意参数结构为前者为错误后者为正确(代码编写中出现的错误,仅供参考,具体原因不明^~^);
源码:
const fs = require("fs"); const path = require("path"); let pathName1 = path.join(__dirname,"files", "1.txt"); let pathName2 = path.join(__dirname,"files", "2.txt"); let pathName3 = path.join(__dirname,"files", "3.txt"); let pathName4 = path.join(__dirname,"files", "data.txt"); fs.readFile(pathName1,"utf-8",(error1, data1)=>{ if(error1){ console.log(error1); return } fs.readFile(pathName2,"utf-8",(error2, data2)=>{ if(error2){ console.log(error2); return } fs.readFile(pathName3,"utf-8",(error3, data3)=>{ if(error3){ console.log(error3); return } // console.log(data1+data2+data3); fs.writeFile(pathName4,data1+data2+data3,"utf-8",(error)=>{ console.log(data1+data2+data3); }) }) }) });
回调地狱
在上面的题目中,操作之间是存在依赖性的,上一步依赖下一步的成功执行。但是操作又是通过异步api完成,则我们只能在回调函数里面编写,那么这个时候就会出现回调嵌套回调,俗称:回调地狱 Callback Hell。
后面我们使用promise来解决。