需求:
依次读取1.txt
、2.txt
、3.txt
三个文件,因为fs.readFile
属于异步编程,可使用promise
完成,解决回调地狱问题。
文件内容:
1.txt
:12.txt
:23.txt
:3
代码实现:
const fs = require('fs');
// 将三个promise定义成函数,可以再调用的时候再执行,实现依次执行
function p1() {
// 函数直接返回promise对象,就可以写成“p1().then”的形式
return new Promise((resolve, reject) => {
fs.readFile('./1.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
function p2() {
return new Promise((resolve, reject) => {
fs.readFile('./2.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
function p3() {
return new Promise((resolve, reject) => {
fs.readFile('./3.txt', 'utf8', (err, result) => {
resolve(result)
})
});
}
p1().then((r1) => {
console.log(r1);
// 返回p2(),直接用链式编程
return p2();
})
.then((r2) => {
console.log(r2);
return p3();
})
.then((r3) => {
console.log(r3)
})