@rutter/bottleneck
Version:
Distributed task scheduler and rate limiter
29 lines (27 loc) • 725 B
text/coffeescript
DLList = require "./DLList"
class Sync
constructor: (, ) ->
= 0
= new DLList()
isEmpty: -> .length == 0
_tryToRun: ->
if ( < 1) and .length > 0
++
{ task, args, resolve, reject } = .shift()
cb = try
returned = await task args...
() -> resolve returned
catch error
() -> reject error
--
cb()
schedule: (task, args...) =>
resolve = reject = null
promise = new (_resolve, _reject) ->
resolve = _resolve
reject = _reject
.push { task, args, resolve, reject }
promise
module.exports = Sync