|
|
- # inflight
-
- Add callbacks to requests in flight to avoid async duplication
-
- ## USAGE
-
- ```javascript
- var inflight = require('inflight')
-
- // some request that does some stuff
- function req(key, callback) {
- // key is any random string. like a url or filename or whatever.
- //
- // will return either a falsey value, indicating that the
- // request for this key is already in flight, or a new callback
- // which when called will call all callbacks passed to inflightk
- // with the same key
- callback = inflight(key, callback)
-
- // If we got a falsey value back, then there's already a req going
- if (!callback) return
-
- // this is where you'd fetch the url or whatever
- // callback is also once()-ified, so it can safely be assigned
- // to multiple events etc. First call wins.
- setTimeout(function() {
- callback(null, key)
- }, 100)
- }
-
- // only assigns a single setTimeout
- // when it dings, all cbs get called
- req('foo', cb1)
- req('foo', cb2)
- req('foo', cb3)
- req('foo', cb4)
- ```
|