autoflow-q
Version:
autoflow-q is a plugin for autoflow, the flow control rules engine, which adds integration with Q-style Deferred promises https://github.com/kriskowal/q
38 lines (28 loc) • 1.13 kB
JavaScript
;
/*jshint white: false */
var Q = require('q');
var OUTPUT_STYLE_DEFERRED_PROMISE = 'Q.promise';
var autoflow = require('autoflow');
autoflow.resolvePromises(); // turn on automatic promise resolution
autoflow.events.on(autoflow.events.TYPES.EXEC_INPUT_PREPROCESS, function (parsedInput) {
var options = parsedInput.options;
var args = parsedInput.args;
var cb = parsedInput.cb;
var extraArgs = parsedInput.extraArgs;
// no callback function provided, use promise when creating outTask
if (options.outputStyle === 'cb' && typeof(cb) !== 'function') {
parsedInput.options.outputStyle = OUTPUT_STYLE_DEFERRED_PROMISE;
}
});
autoflow.events.on(autoflow.events.TYPES.EXEC_OUTTASK_CREATE, function (outTaskOptions) {
var execOptions = outTaskOptions.execOptions;
if (execOptions && execOptions.outputStyle === OUTPUT_STYLE_DEFERRED_PROMISE) {
var deferred = Q.defer();
outTaskOptions.cbFunc = function (err, value) {
if (err) return deferred.reject(err);
deferred.resolve(value);
};
outTaskOptions.retValue = deferred.promise;
}
});
module.exports = autoflow;