promise解决回调地狱的示例
需求:使用fs模块 依次读取出1-3.txt文件中的值
//引入fs模块
const fs = require('fs');
//回调地狱
// fs.readFile('./1.txt', 'utf8', (err, result1) => {
// console.log(result1);
// fs.readFile('./2.txt', 'utf8', (err, result2) => {
// console.log(result2);
// })
// });
//因为fs中的是回调函数 要依次地读取 所以要把读取文件2的代码写在读取文件1的代码中
//使用一个函数来调用Promise函数 才能够很好地控制函数执行的顺序
function p1() {
return new Promise((resolve, reject) => {
fs.readFile('./1.txt', 'utf8', (err, result) => {
if (err !== null) {
return reject(err);
} else {
return resolve(result)
}
})
})
}
function p2() {
return new Promise((resolve, reject) => {
fs.readFile('./2.txt', 'utf8', (err, result) => {
// console.log(result1);
resolve(result);
})
})
}
function p3() {
return new Promise((resolve, reject) => {
fs.readFile('./3.txt', 'utf8', (err, result) => {
// console.log(result1);
resolve(result);
})
})
}
p1().then((r1) => {
console.log(r1);
//在调用p1的时候会返回 p2()的值 相当于执行完p1的时候 执行p2 这样就可以使用链式使用then方法
return p2();
}).then((r2) => {
console.log(r2);
return p3();
}).then((r3) => {
console.log(r3);
})