// 实现promisify将错误优先的回调风格函数改为promis风格
// 错误优先的回调风格函数参考nodejs的常用api,比如fs.readFile(path,(err, value) => ...)。
function promisify(fn) {
// todo
}
// 模拟一个错误优先的回调风格函数
function readFile(path, cb) {
setTimeout(() => {
if (Math.random() > 0.5) {
cb(new Error(`读取${path}出错`));
} else {
cb(null, `读取${path}成功`);
}
}, 100);
}
// 常规调用测试
readFile('file.text', (err, value) => {
if (err) {
console.log('error ', err);
return;
}
console.log('success ', value);
});
/** 测试代码 */
// 使用promisify改造readFile函数
const readFilePromise = promisify(readFile);
// 改造后的调用方式
readFilePromise('promisefile.txt')
.then((res) => {
console.log('promise success', res);
})
.catch((error) => {
console.log('promise error', error);
});
console