Nice Parakeet Marriage

    thenify

    3.3.1 • Public • Published

    thenify

    NPM version Build status Test coverage Dependency Status License Downloads

    Promisify a callback-based function using any-promise.

    • Preserves function names
    • Uses a native promise implementation if available and tries to fall back to a promise implementation such as bluebird
    • Converts multiple arguments from the callback into an Array, also support change the behavior by options.multiArgs
    • Resulting function never deoptimizes
    • Supports both callback and promise style

    An added benefit is that thrown errors in that async function will be caught by the promise!

    API

    fn = thenify(fn, options)

    Promisifies a function.

    Options

    options are optional.

    • options.withCallback - support both callback and promise style, default to false.

    • options.multiArgs - change the behavior when callback have multiple arguments. default to true.

      • true - converts multiple arguments to an array
      • false- always use the first argument
      • Array - converts multiple arguments to an object with keys provided in options.multiArgs
    • Turn async functions into promises

    var thenify = require('thenify');
     
    var somethingAsync = thenify(function somethingAsync(a, b, c, callback) {
      callback(null, a, b, c);
    });
    • Backward compatible with callback
    var thenify = require('thenify');
     
    var somethingAsync = thenify(function somethingAsync(a, b, c, callback) {
      callback(null, a, b, c);
    }, { withCallback: true });
     
    // somethingAsync(a, b, c).then(onFulfilled).catch(onRejected);
    // somethingAsync(a, b, c, function () {});

    or use thenify.withCallback()

    var thenify = require('thenify').withCallback;
     
    var somethingAsync = thenify(function somethingAsync(a, b, c, callback) {
      callback(null, a, b, c);
    });
     
    // somethingAsync(a, b, c).then(onFulfilled).catch(onRejected);
    // somethingAsync(a, b, c, function () {});
    • Always return the first argument in callback
    var thenify = require('thenify');
     
    var promise = thenify(function (callback) {
      callback(null, 1, 2, 3);
    }, { multiArgs: false });
     
    // promise().then(function onFulfilled(value) {
    //   assert.equal(value, 1);
    // });
    • Converts callback arguments to an object
    var thenify = require('thenify');
     
    var promise = thenify(function (callback) {
      callback(null, 1, 2, 3);
    }, { multiArgs: [ 'one', 'tow', 'three' ] });
     
    // promise().then(function onFulfilled(value) {
    //   assert.deepEqual(value, {
    //     one: 1,
    //     tow: 2,
    //     three: 3
    //   });
    // });

    Install

    npm i thenify

    DownloadsWeekly Downloads

    4,146,624

    Version

    3.3.1

    License

    MIT

    Unpacked Size

    7.92 kB

    Total Files

    5

    Last publish

    Collaborators

    • dead_horse
    • dead-horse
    • jongleberry