UNPKG

nobloxmmc.js

Version:

A Node.js wrapper for ROBLOX. (original from sentanos)

63 lines (61 loc) 1.44 kB
// Includes var promise = require('./promise.js') var options = require('../options.js') // Define module.exports = function (type, index, func, handler) { var group = options.queue[type] if (!group[index]) { group[index] = { jobs: [] } } var home = group[index] function run (time) { return function (resolve, reject) { setTimeout(function () { func().then(resolve).catch(reject) }, time) } } function deactivate (err) { jobs.shift() if (!handler(err)) { home.last = Date.now() } } function next () { jobs.shift() home.last = Date.now() } if (group.delay > 0) { var jobs = home.jobs var delay = group.delay var last = home.last if (jobs.length === 0) { var item var diff = Date.now() - last if (!last || diff > delay) { item = func() } else { item = promise(run(delay - diff)) } jobs.push(item) item.then(next).catch(deactivate) return item } else { var job = jobs[jobs.length - 1].then(function () { var item = promise(run(delay)) item.then(next).catch(deactivate) return item }).catch(function (err) { var item = handler && handler(err) ? func() : promise(run(delay)) item.then(next).catch(deactivate) return item }) jobs.push(job) return job } } else { return func() } }