每周npm模块源码解读:pify
2018-10-23 字数统计:920 字 阅读时长 ≈ 1 分钟

周2018.10.22 ~ 2018.10.28

前言

模块名:pify

github: https://github.com/sindresorhus/pify

描述:将回调函数promise化,也就是回调函数可以使用then、catch

适合人群:至少看过一遍源码

正文

首先通过 Object.assign 返回新的配置选项,然后判断pify的第一个参数的类型。如类型不正确,则报错。

如果第一个参数的类型是函数,则创建一个函数,根据 excludeMain 来判断是用它本身自己还是promise化的回调。

如果第一个参数的类型是对象,则创建一个新的对象,这个对象的原型为这个对象的原型。接着去遍历第一个参数(对象),通过三表表达式判断对象的每个Key是否为函数和一个筛选函数,如果为true,则将这个函数promise化,否则直接返回该值。

函数 processFn 就是将回调函数promise化。先创建Promsise函数,然后在其通过配置选项处理参数。最后通过 fn.apply(this.args) 来执行。

结语

node中的大部分异步函数可以用模块pify来promise化。