前言:备战蓝桥杯web组,在此记录的刷真题的笔记
题解:
1.根据前面readFileSync(textPath, 'utf8'),可以知道首先需要返回一个有两个形参(textPath,type)的函数
2.看到.then .catch,可知道需要返回一个Promise对象,返回的Promise有resolve、reject两个形参,resolve在成功时执行的,reject在失败时执行的
3.传入的fn即fs.readFlie(path[, options], callback),三个参数:路径,编码格式,回调函数
其中回调函数有两个参数(err, contrast),err在读取失败时执行,contrast在读取成功时执行,当如果读取成功err的值为null,如果读取失败,则err的值为 错误对象,dataStr 的值为undefined
代码:
const promisefy = (fn) => {
// TODO 此处完成该函数的封装
return (textPath,type) =>
new Promise((resolve,reject) => {
fn(textPath,type,(err, contrast) => {
if(err) reject(err)
else resolve(contrast)
})
})
}