Simple command queue
Simple command queue, so callbacks enqueued are called one after another.
``coffee
queue = require "@tech_userreport.com/queue"
cmdq = queue()
cmdq.enqueue (next) ->
setTimeout () ->
console.log "I'll be called first"
next()
, 0
cmdq.enqueue (next) ->
console.log "I'll be called second"
next()
`
Enqueue command to be called. Receiving callback which
should be called once command is finished.
`coffee`
cmdq.enqueue (next) ->
longRunningAsyncMethod () ->
next()
Count of commands in queue including one being executed
`coffee`
cmdq.enqueue (next) ->
console.log cmdq.length # 1
next()
Subscribe to changes in queue. It's called when new
command is added to queue or command had finished
execution.
`coffee
cmdq.onchange () ->
# called two times
# first call .length is 1
# second call .length is 0
console.log cmdq.length
cmdq.enqueue (next) ->
next()
`
Pause queue processing.
`coffee
queue = require "@tech_userreport.com/queue"
cmdq1 = queue()
cmdq2 = queue()
cmdq1.onchange () ->
if cmdq1.length isnt 0
cmdq2.pause()
else
cmdq2.resume()
``
Resume queue processing