基于 Promise 封装读文件的方法
方法的封装要求:
① 方法的名称要定义为 getFile
② 方法接收一个形参 fpath,表示要读取的文件的路径
③ 方法的返回值为 Promise 实例对象
1.getFile方法的基本定义
//1.方法接收一个形参 fpath,表示要读取的文件的路径
function getFile(fpath) {
//2.方法的返回值为 Promise 的实例对象
return new Promise()
}
注意:现在的new Promise()只是创建了一个形式上的异步操作
2.创建具体的异步操作
如果想要创建具体的异步操作,则需要在 new Promise() 构造函数期间,传递一个 function 函数,将具体的异步操作定义到 function 函数内部。
function getFile(fpath) {
return new Promise( function() {
fs.readFile(fpath,'utf8',(err,dataStr) => { })
})
}
3.获取.then()两个实参
通过 .then() 指定的成功和失败的回调函数,可以在 function 的形参中进行接收,示例代码如下
function getFile(fpath) {
return new Promise( function( resolve, reject ) {
fs.readFile(fpath,'utf8',(err,dataStr) => { })
})
}
getFile('./files/11.txt').then((r1) => { console.log(r1)})
.catch((err) => console.log(err.message))
4.调用resolve 和 reject 回调函数
function getFile(fpath) {
return new Promise( function( resolve, reject ) {
fs.readFile(fpath,'utf8',(err,dataStr) => {
if(err) return reject(err) //如果读取失败,则调用“失败的回调函数”
resolve(dataStr) //如果成功,则调用“成功的回调函数”
})
})
}
getFile('./files/11.txt').then((r1) => { console.log(r1)})
.catch((err) => console.log(err.message))