158 字
1 分钟
实现node中的util.promisify

将原本需要通过传入回调参数来实现回调执行改为利用promise.then的方式来调用,或者通过 async/await 的方式调用 从而实现逻辑上的同步操作。

实现原理:#

改变callback 在执行callback 的时候将参数resolve 出去 这样就可以在执行函数的时候拿到回调函数的参数 再执行真正的callback

function a(str,callback){
callback(str+'456')
}
function promisify(fn) {
return function (...args) {
return new Promise(function (resolve, reject) {
let callback = function(...args) {
resolve(...args)
}
fn.apply(null, [...args,callback]);
});
}
}
const aa = promisify(a)
async function xxx(){
const data = await aa('123’) // data 就是回调函数中的参
console.log(data)
}
xxx()
实现node中的util.promisify
https://blog.cxyxiaoyu.top/posts/实现node中的util-promisify/
作者
小宇
发布于
2022-01-13
许可协议
CC BY-NC-SA 4.0