手写个简单的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);
});
}
}