JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4472903
  • Score
    100M100P100Q210249F
  • License MIT

Converts callback-based functions to ES6 Promises

Package Exports

  • es6-promisify

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (es6-promisify) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Travis CI

es6-promisify

Converts callback-based functions to ES6/ES2015 Promises, using a boilerplate callback function.

NOTE: All-new API for Version 6.0.0; please read carefully!

Install

Install with npm

npm install es6-promisify

Example

const {promisify} = require("es6-promisify");

// Convert the stat function
const fs = require("fs");
const stat = promisify(fs.stat);

// Now usable as a promise!
stat("example.txt").then(function (stats) {
    console.log("Got stats", stats);
}).catch(function (err) {
    console.error("Yikes!", err);
});

Promisify methods

const {promisify} = require("es6-promisify");

// Create a promise-based version of send_command
const redis = require("redis").createClient(6379, "localhost");
const client = promisify(redis.send_command.bind(redis));

// Send commands to redis and get a promise back
client("ping").then(function (pong) {
    console.log("Got", pong);
}).catch(function (err) {
    console.error("Unexpected error", err);
}).then(function () {
    redis.quit();
});

Handle multiple callback arguments, with named parameters

const {promisify} = require("es6-promisify");

function test(cb) {
    return cb(undefined, 1, 2, 3);
}

// Create promise-based version of test
test[promisify.argumentNames] = ["one", "two", "three"];
const multi = promisify(test);

// Returns named arguments
multi().then(result => {
    console.log(result); // {one: 1, two: 2, three: 3}
});

Provide your own Promise implementation

const {promisify} = require("es6-promisify");

// Now uses Bluebird
promisify.Promise = require("bluebird");

const test = promisify(cb => cb(undefined, "test"));
test().then(result => {
    console.log(result); // "test", resolved using Bluebird
});

Tests

Test with tape

$ npm test

Changes from v5.0.0

  • Allow developer to specify a different implementations of Promise
  • No longer ships with a polyfill for Promise. If your environment has no native Promise you must polyfill yourself, or set promisify.Promise to an A+ compatible Promise implementation.
  • Removed support for settings.thisArg: use .bind() instead.
  • Removed support for settings.multiArgs: use named arguments instead.

Published under the MIT License.