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/