async-compat
TypeScript icon, indicating that this package has built-in type declarations

1.7.1 • Public • Published

async-compat

Compatibility functions for writing libraries that support synchronous, callback and promise signatures.

It handles both the call signature differences between callback and promises APIs (eg. missing the last callback parameter) by converting them to callbacks. It also resolves returned parameters when promises are returned.

var compat = require('async-compat');
var assert = require(assert');

/////////////////
// synchronous
/////////////////
function fn(value1) {
  assert.equal(value1, 1);
  return 4;
}

compat.asyncFunction(fn, false /* no callbacks */, 1, function (err, result) {
  assert.equal(result, 4);
});

function errorFn(value1) {
  assert.equal(value1, 1);
  return new Error('Failed');
}

compat.asyncFunction(errorFn, false /* no callbacks */, 1, function (err, result) {
  assert.ok(!!err);
});

/////////////////
// callback
/////////////////
function callbackFn(value1, callback) {
  assert.equal(value1, 1);
  callback(null, 4);
}

compat.asyncFunction(callbackFn, true /*  no callbacks */, 1, function (err, result) {
  assert.equal(result, 4);
});

function errorCallbackFn(value1, callback) {
  assert.equal(value1, 1);
  callback(new Error('Failed'));
}

compat.asyncFunction(errorCallbackFn, true /*  no callbacks */, 1, function (err, result) {
  assert.ok(!!err);
});

/////////////////
// promise
/////////////////
function promiseFn(value1) {
  assert.equal(value1, 1);
  return Promise.resolve(4);
}

compat.asyncFunction(promiseFn, false /* no callbacks */, 1, function (err, result) {
  assert.equal(result, 4);
});

function errorPromiseFn(value1) {
  assert.equal(value1, 1);
  return Promise.reject(new Error('Failed'));
}

compat.errorPromiseFn(promiseFn, false /* no callbacks */, 1, function (err, result) {
  assert.ok(!!err);
});

/async-compat/

    Package Sidebar

    Install

    npm i async-compat

    Weekly Downloads

    2,093

    Version

    1.7.1

    License

    MIT

    Unpacked Size

    44.5 kB

    Total Files

    40

    Last publish

    Collaborators

    • kmalakoff