Sha256: a77a6c139ed6fe2630383ab8f979a2ac0bb5108aa06640aa760ce1b805eb75dc

Contents?: true

Size: 801 Bytes

Versions: 11

Compression:

Stored size: 801 Bytes

Contents

u = up.util

###**
A linear task queue whose (2..n)th tasks can be changed at any time.

@function up.DivertibleChain
@internal
###
class up.DivertibleChain

  constructor: ->
    @reset()

  reset: =>
    @queue = []
    @currentTask = undefined

  promise: =>
    lastTask = u.last(@allTasks())
    lastTask?.promise || Promise.resolve()

  allTasks: =>
    tasks = []
    tasks.push(@currentTask) if @currentTask
    tasks = tasks.concat(@queue)
    tasks

  poke: =>
    unless @currentTask # don't start a new task while we're still running one
      if @currentTask = @queue.shift()
        promise = @currentTask()
        u.always promise, =>
          @currentTask = undefined
          @poke()

  asap: (newTasks...) =>
    @queue = u.map(newTasks, u.previewable)
    @poke()
    @promise()

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
unpoly-rails-1.0.3 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-1.0.1 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-1.0.0 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.62.1 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.62.0 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.61.1 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.61.0 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.60.3 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.60.2 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.60.1 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee
unpoly-rails-0.60.0 lib/assets/javascripts/unpoly/classes/divertible_chain.coffee