You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict' module.exports = inflight
let Bluebird try { Bluebird = require('bluebird') } catch (_) { Bluebird = Promise }
const active = {} inflight.active = active function inflight (unique, doFly) { return Bluebird.all([unique, doFly]).then(function (args) { const unique = args[0] const doFly = args[1] if (Array.isArray(unique)) { return Bluebird.all(unique).then(function (uniqueArr) { return _inflight(uniqueArr.join(''), doFly) }) } else { return _inflight(unique, doFly) } })
function _inflight (unique, doFly) { if (!active[unique]) { active[unique] = (new Bluebird(function (resolve) { return resolve(doFly()) })) active[unique].then(cleanup, cleanup) function cleanup() { delete active[unique] } } return active[unique] } }
|