becky
Version:
Promisify and callbackify functions
45 lines (38 loc) • 1.03 kB
JavaScript
;
module.exports = {};
module.exports.callbackify = module.exports.cb = function (func) {
return function () {
var _this = this;
var args = [].slice.call(arguments);
var cb = args.pop();
func.apply(this, args).then(function (res) {
return cb.call(_this, null, res);
}).catch(function (err) {
return cb.call(_this, err);
});
};
};
module.exports.promisify = module.exports.p = function (func) {
return function () {
var _this2 = this;
var args = [].slice.call(arguments);
return new Promise(function (resolve, reject) {
args.push(function (err, res) {
err ? reject(err) : resolve(res);
});
func.apply(_this2, args);
});
};
};
module.exports.promisifyMulti = module.exports.pm = function (func) {
return function () {
var _this3 = this;
var args = [].slice.call(arguments);
return new Promise(function (resolve, reject) {
args.push(function (err) {
err ? reject(err) : resolve([].slice.call(arguments, 1));
});
func.apply(_this3, args);
});
};
};