手写个简单的promisify方法

2021-02-22  本文已影响0人  IT飞牛

node中为了能方便使用async/await语法,通常会使用promisify方法将node中遵循错误优先的api接口转换,返回一个Promise实例,从而无缝衔接使用async/await语法;

例如

(async function () {
    var readFile = promisify(fs.readFile);
    var data = await readFile("./conf.js");
    console.log(data.toString());
})()

以上案例读取conf.js,并打印,使用promisify转换fs.readFile

手写一个promisify如下

function promisify(fn) {
    return function (...args) {
        return new Promise(function (resolve, reject) {
            args.push(function (err, ...arg) {
                if (err) {
                    reject(err);
                    return;
                }
                resolve(...arg);
            });

            fn.apply(null, args);
        });
    }
}
上一篇下一篇

猜你喜欢

热点阅读