spawn: fix call and promisify.
This commit is contained in:
parent
24b20b8317
commit
099fe186f0
@ -217,6 +217,23 @@ function wrap(resolve, reject) {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Call a function that accepts node.js
|
||||
* style callbacks, wrap with a promise.
|
||||
* @private
|
||||
* @param {Object} ctx
|
||||
* @param {Function} func
|
||||
* @param {Array} args
|
||||
* @returns {Promise}
|
||||
*/
|
||||
|
||||
function _call(ctx, func, args) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
args.push(wrap(resolve, reject));
|
||||
func.apply(ctx, args);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Call a function that accepts node.js
|
||||
* style callbacks, wrap with a promise.
|
||||
@ -225,17 +242,13 @@ function wrap(resolve, reject) {
|
||||
*/
|
||||
|
||||
function call(func) {
|
||||
var self = this;
|
||||
var args = new Array(Math.max(0, arguments.length - 1));
|
||||
var i;
|
||||
|
||||
for (i = 1; i < arguments.length; i++)
|
||||
args[i - 1] = arguments[i];
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
args.push(wrap(resolve, reject));
|
||||
func.apply(self, args);
|
||||
});
|
||||
return _call(this, func, args);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -249,7 +262,13 @@ function call(func) {
|
||||
|
||||
function promisify(func, ctx) {
|
||||
return function() {
|
||||
return call.call(ctx, arguments);
|
||||
var args = new Array(arguments.length);
|
||||
var i;
|
||||
|
||||
for (i = 0; i < arguments.length; i++)
|
||||
args[i] = arguments[i];
|
||||
|
||||
return _call(ctx || this, func, args);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user