Have ideas to improve npm?Join in the discussion! »

    This package has been deprecated

    Author message:

    Use promise-toolbox/fromEvent instead

    event-to-promise
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/event-to-promise package

    0.8.0 • Public • Published

    event-to-promise

    Build Status Dependency Status devDependency Status

    Create a promise waiting for an event

    Installation

    Node & Browserify/Webpack

    Installation of the npm package:

    > npm install --save event-to-promise
    

    Then require the package:

    var eventToPromise = require('event-to-promise');

    Browser

    You can directly use the build provided at unpkg.com:

    <script src="https://unpkg.com/event-to-promise@0.8/dist/event-to-promise.js"></script>

    Example

    function createServer (port) {
      var server = require('http').createServer()
      server.listen(port)
     
      // The server will be returned once it has started listening.
      //
      // If an error happened, it will be forwarded instead.
      return eventToPromise(server, 'listening').then(function () {
        return server
      })
    }
     
    // Using plain promise.
    createServer(80).then(function (server) {
      console.log('Server listening on http://localhost:80/')
    }).catch(function (error) {
      console.error('Server could not start:', error)
    })

    Event better using ES2016 asynchronous functions:

    async function createServer (port) {
      var server = require('http').createServer()
      server.listen(port)
     
      await eventToPromise(server, 'listening')
     
      return server
    }
     
    async function main () {
      try {
        const server = await createServer(80);
        console.log('Server listening on http://localhost:80/');
      } catch (error) {
        console.error('Server could not start:', error);
      }
    }
     
    main()

    API

    This library requires promises support, for Node versions prior to 0.12 see this page to enable them.

    eventToPromise(emitter, event, [options]) => Promise

    Wait for one event. The first parameter of the emitted event is used to resolve/reject the promise.

    The returned promise has a cancel() method which can be used to remove the event listeners. Note that the promise will never settled if canceled.

    const promise = eventToPromise(emitter, 'foo')
    promise.cancel()

    emitter

    Required Type: Object

    The event emitter you want to watch an event on.

    event

    Required Type: string

    The name of the event you want to watch.

    options

    array

    Type: boolean Default: false

    If true, all parameters of the emitted events are put in an array which is used to resolve/reject the promise.

    error

    Type: string Default: "error"

    The name of the event which rejects the promise.

    ignoreErrors

    Type: boolean Default: false

    Whether the error event should be ignored and not reject the promise.

    eventToPromise.multi(emitter, successEvents, errorEvents) => Promise

    Wait for one of multiple events. The array of all the parameters of the emitted event is used to resolve/reject the promise.

    The array also has an event property indicating which event has been emitted.

    The returned promise has a cancel() method which can be used to remove the event listeners. Note that the promise will never settled if canceled.

    const promise = eventToPromise(emitter, 'foo')
    promise.cancel()

    emitter

    Required Type: Object

    The event emitter you want to watch an event on.

    successEvents

    Required Type: Array<string>

    The names of the events which resolve the promise.

    errorEvents

    Type: Array<string> Default: [ 'error' ]

    The names of the events which reject the promise.

    Contributing

    Contributions are very welcome, either on the documentation or on the code.

    You may:

    • report any issue you've encountered;
    • fork and create a pull request.

    License

    ISC © Julien Fontanet

    Keywords

    Install

    npm i event-to-promise

    DownloadsWeekly Downloads

    46,571

    Version

    0.8.0

    License

    MIT

    Last publish

    Collaborators

    • avatar
    • avatar