Back to Async

constant.js

docs/v2/constant.js.html

3.2.61.4 KB
Original Source
import slice from './internal/slice';

/**
 * Returns a function that when called, calls-back with the values provided.
 * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to
 * [`auto`]{@link module:ControlFlow.auto}.
 *
 * @name constant
 * @static
 * @memberOf module:Utils
 * @method
 * @category Util
 * @param {...*} arguments... - Any number of arguments to automatically invoke
 * callback with.
 * @returns {AsyncFunction} Returns a function that when invoked, automatically
 * invokes the callback with the previous given arguments.
 * @example
 *
 * async.waterfall([
 * async.constant(42),
 * function (value, next) {
 * // value === 42
 * },
 * //...
 * ], callback);
 *
 * async.waterfall([
 * async.constant(filename, "utf8"),
 * fs.readFile,
 * function (fileData, next) {
 * //...
 * }
 * //...
 * ], callback);
 *
 * async.auto({
 * hostname: async.constant("https://server.net/"),
 * port: findFreePort,
 * launchServer: ["hostname", "port", function (options, cb) {
 * startServer(options, cb);
 * }],
 * //...
 * }, callback);
 */
export default function(/*...values*/) {
    var values = slice(arguments);
    var args = [null].concat(values);
    return function (/*...ignoredArgs, callback*/) {
        var callback = arguments[arguments.length - 1];
        return callback.apply(this, args);
    };
};