Coder Social home page Coder Social logo

event-to-promise's Introduction

event-to-promise

Build Status Dependency Status devDependency Status

Create a promise waiting for an event

Install

Download manually or with package-manager.

npm install --save event-to-promise

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

Example

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

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:

import eventToPromise from 'event-to-promise'

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

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

event-to-promise's People

Contributors

chocolateboy avatar greenkeeperio-bot avatar julien-f avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.