异步数据封装与执行 Promise
最大目的:通过链式调用解决回调地狱
1. 使用Promise封装读取文件:
const p = new Promise(function(res, rej) {
fs.readFile('./es6.mdaafdasfa', (err, data) => {
if (err) rej(err);
res(data)
})
}).then((res) => {
console.log(res.toString()) //读取成功
}, (rej) => {
console.log("读取失败") //读取失败
})
2. 用promise读取多个文件同时解决回调地狱问题:
const fs = require('fs');
const { off } = require('process');
const p = new Promise((res, rej) => {
fs.readFile('./es6.md', (err, data) => {//读取第一个文件
if (err) rej(err);
res(data)
})
}).then((value) => {
// console.log(value.toString())
return new Promise((res, rej) => {
fs.readFile('./flex.md', (err, data) => {//读取第二个文件
if (err) rej(err)
res([value, data])
})
})
}).then((value) => {
console.log(value.toString())
return new Promise((res, rej) => {
fs.readFile('./promise.md', (err, data) => {//读取第三个文件
if (err) rej(err)
// console.log(value.push(data))
value.push(data)
res(value)
})
})
}).then(value => {
console.log(value.toString())
})
3. Promise对象的catch方法
catch方法通常用来接收promise的rej对象情况,通常写在最后一个then的后面