手写个简单的promisify方法

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);
        });
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 异步编程在JavaScript中非常重要。过多的异步编程也带了回调嵌套的问题,本文会提供一些解决“回调地狱”的方法...
    AlienZHOU阅读 27,869评论 2 52
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 1,345评论 0 2
  • 为什么要学习nodejs 原因 因为这是一门后台开发语言,用js来写得后台语言,使用ecma规范,前端人员学习起来...
    zyghhhh阅读 3,106评论 0 1
  • 问题来源 平时我们日常写代码中,可能会遇到这种某个回调有异步请求,请求的回调又有异步请求、循环 目前有几个比较好的...
    广州芦苇科技web前端阅读 10,715评论 0 1
  • 1.Node是什么 Node是一个基于Chrome V8引擎的JavaScript代码运行环境。 1.1 运行环境...
    Scincyc阅读 3,897评论 0 0