SOURCE

// 实现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 命令行工具 X clear

                    
>
console