{"_id":"first-event","_rev":"296496","name":"first-event","description":"Race event-emitter events, resolves the first to occur. Promise-based ee-first","dist-tags":{"latest":"1.0.0"},"maintainers":[{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"time":{"modified":"2021-06-03T18:58:30.000Z","created":"2016-01-28T07:17:16.761Z","1.0.0":"2016-01-28T07:17:16.761Z"},"users":{"alanshaw":true},"author":{"name":"Tejesh Mehta"},"repository":{"type":"git","url":"https://github.com/tjmehta/first-event.git"},"versions":{"1.0.0":{"name":"first-event","version":"1.0.0","description":"Race event-emitter events, resolves the first to occur. Promise-based ee-first","main":"index.js","scripts":{"test":"lab --assert code --threshold 100","lint":"standard","format":"standard --format"},"repository":{"type":"git","url":"https://github.com/tjmehta/first-event.git"},"keywords":["event","emitter","eventemitter","events","first","race","handler","ee","ee-first","ee-first-promise","promise"],"author":{"name":"Tejesh Mehta"},"license":"MIT","bugs":{"url":"https://github.com/tjmehta/first-event/issues"},"homepage":"https://github.com/tjmehta/first-event","devDependencies":{"code":"^1.5.0","lab":"^6.2.0","promise-polyfill":"^3.1.0","standard":"^5.4.1"},"dependencies":{"101":"^1.2.0","assert-args":"^1.0.3"},"gitHead":"07a5ecb47abff4d7deb3e69d1e4fe3eea2fa86bb","_id":"first-event@1.0.0","_shasum":"3d8675b339ea6bd82ff14f7091c6c19ba2b89906","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.5.0","_npmUser":{"name":"tjmehta","email":"tj_mehta@hotmail.com"},"maintainers":[{"name":"tjmehta","email":"tejesh.mehta@gmail.com"}],"dist":{"shasum":"3d8675b339ea6bd82ff14f7091c6c19ba2b89906","size":3533,"noattachment":false,"key":"/first-event/-/first-event-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/first-event/download/first-event-1.0.0.tgz"},"directories":{},"publish_time":1453965436761,"_cnpm_publish_time":1453965436761,"_hasShrinkwrap":false}},"readme":"# first-event [![Build Status](https://travis-ci.org/tjmehta/first-event.svg?branch=master)](https://travis-ci.org/tjmehta/first-event) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/)\nRace event-emitter events, resolves the first to occur. Promise-based [ee-first](https://github.com/jonathanong/ee-first)\n\n# Installation\n```js\nnpm install --save first-event\n```\n\n# Usage\n#### Error Example\n```js\nvar first = require('first-event')\nvar ee = new EventEmitter()\n\nfirst(ee, ['error', 'foo', 'bar'])\n  .catch(function (err) {\n    // error from emit 'error' gets sent here\n    console.log(err) // [ Error: 'boom' ]\n  })\n\nee.emit('error', new Error('boom'))\n// below does nothing, bc it happenned second\nee.emit('foo', 1)\n```\n#### Event Example\n```js\nvar first = require('first-event')\nvar ee = new EventEmitter()\n\nfirst(ee, ['error', 'foo', 'bar'])\n  .then(function (firstEvent) {\n    console.log(firstEvent.ee)    // [ EventEmitter: ... ]\n    console.log(firstEvent.event) // 'foo'\n    console.log(firstEvent.args)  // [ 'one', 'two', 'three' ]\n  })\n\nee.emit('foo', 'one', 'two', 'three')\n// below does nothing, bc it happenned second\nee.emit('bar', 1)\n```\n#### Race Events from different EventEmitters\n```js\nvar first = require('first-event')\nvar ee = new EventEmitter()\nvar ee2 = new EventEmitter()\n\nPromise.race(\n  first(ee, ['error', 'foo', 'bar'])\n  first(ee2, ['error', 'foo', 'bar'])\n).then(function (firstEvent) {\n  console.log(firstEvent.ee)    // [ EventEmitter: ... ] === ee2\n  console.log(firstEvent.event) // 'foo'\n  console.log(firstEvent.args)  // [ 'one', 'two', 'three' ]\n})\n\nee2.emit('foo', 'one', 'two', 'three')\n// below does nothing, bc it happenned second\nee.emit('bar', 1)\n```\n### Cancel\n```js\nvar first = require('first-event')\nvar ee = new EventEmitter()\nvar eventPromise = first(ee, ['error', 'foo', 'bar'])\n\neventPromise\n  .then(function (data) {\n    // never happens, bc event handlers were cancelled below\n  }).catch(function () {\n    // never happens, bc event handlers were cancelled below\n  })\n\n// cancel and cleanup event handlers\neventPromise.cancel()\n// below will do nothing, bc the event handlers were removed\nee.emit('foo', 1)\n```\n\n# License\nMIT","_attachments":{},"homepage":"https://github.com/tjmehta/first-event","bugs":{"url":"https://github.com/tjmehta/first-event/issues"},"license":"MIT"}