| # 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) |
| ``` |