核心结论
promisify 的作用是把遵循“错误优先回调”约定的函数转换成返回 Promise 的函数。适用前提是:原函数把回调放在参数末尾,并以 (error, value) 调用它。包装后,error 非空时执行 reject,否则执行 resolve。一个可靠实现还应保留调用时的 this,正确处理同步异常,并明确多成功值、重复回调和取消等边界。
可运行实现
function promisify(fn) {
if (typeof fn !== 'function') {
throw new TypeError('fn must be a