Needlessly Promiscuous, Modularize!

    es6-promisify
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/es6-promisify package

    7.0.0 • Public • Published

    Build Status

    es6-promisify

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

    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!
    try {
        const stats = await stat("example.txt");
        console.log("Got stats", stats);
    } catch (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
    try {
        const pong = await client.ping();
        console.log("Got", pong);
    } catch (err) {
        console.error("Unexpected error", err);
    } finally {
        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
    const result = await multi();
    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"));
    const result = await test();
    console.log(result); // "test", resolved using Bluebird

    Tests

    Test with tape

    $ npm test

    Published under the MIT License.

    Install

    npm i es6-promisify

    DownloadsWeekly Downloads

    6,014,538

    Version

    7.0.0

    License

    MIT

    Unpacked Size

    6.5 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar