Open shfshanyue opened 2 years ago
首先明确nodeCallback的规范: 1、回调函数在主函数参数的位置是最后一个 2、回调函数的第一个参数是error 例如
function main(err, b, c, callback) {
let data = b+c
callback(err,data)
}
所以实现的思路就是: 把结果由原先的放在callback中返回,改成放在Promise中返回
const promisify = (fnc) => (...args) => {
return new Promise((resolve, reject) => {
fnc.call(this, ...args, function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
测试结果:
var func1 = function (a, b, c, callback) {
let rst = a + b + c;
callback(null, rst);
};
var func2 = promisify(func1);
func2(1, 2, 3).then((rst) => {
console.log("rst", rst);
}); //输出6