HaXeho e0dad002ed first commit 10 сар өмнө
..
History.md e0dad002ed first commit 10 сар өмнө
LICENSE e0dad002ed first commit 10 сар өмнө
README.md e0dad002ed first commit 10 сар өмнө
index.js e0dad002ed first commit 10 сар өмнө
package.json e0dad002ed first commit 10 сар өмнө

README.md

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
    //   });
    // });