Skip to content
Deferred task runner and manager.
CoffeeScript
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
dist
src
test Add task tests
.gitignore
README.md
bower.json Add done
package.json Add done

README.md

Whirlr

Build Status

Control sequencial deferred events.

Goal

  • Wait locking task (like user input) and resume.
  • Pool action events after current one
  • Handle them with jQuery.Deferred API

Requirements

  • jQuery or simply-deferred

Install

$ npm install whirlr
$ bower install whirlr

How to use

whirlr = new Whirlr

# Add 1st queue
whirlr.add (d) ->
  console.log 'queue 1'
  d.resolve()

# Add 2nd queue
whirlr.add (d) ->
  console.log 'queue 2'
  d.resolve()

# stop runner execution
whirlr.stop()
whirlr.resume()
console.log 'loaded'

Result

loaded
start
queue 1
queue 2
queue 3

API

Whirlr#add(function_or_task)

Add function to last for waiting queue.

whirlr = new Whirlr
whirlr.add (d) -> setTimeout (-> d.resolve()), 100
whirlr.add (d) -> setTimeout (-> d.resolve()), 100
whirlr.add (d) -> setTimeout (-> d.resolve()), 100

Use external deferred.

whirlr = new Whirlr
whirlr.add ->
  Deferred().resolve()

Add as task class.

class MyTask extends Whirlr.Task
  execute: (d)-> d.resolve()
whirlr = new Whirlr
whirlr.add new MyTask

Whirlr#unshift(function_or_task)

Add event queue to head.

(I will rename it...)

whirlr = new Whirlr
whirlr.add (d) ->
  setTimeout ->
    console.log 'A'
    d.resolve()
  , 100
whirlr.unshift (d) ->
  setTimeout ->
    console.log 'B'
    d.resolve()
  , 100
# B -> A

Whirlr#stop()

Stop whirlr.

whirlr = new Whirlr
whirlr.add (d) ->
  setTimeout ->
    console.log 'A'
    d.resolve()
  , 100
whirlr.add (d) ->
  setTimeout ->
    console.log 'B'
    d.resolve()
  , 100
whirlr.stop()
whirlr.resume()
console.log whirlr.stopped() #=> true
console.log whirlr.resuming() #=> true
console.log 'C'

# C -> A -> B

Run tests

# if you don't install mocha
$ npm install -g mocha

# run tests
$ mocha --compilers coffee:coffee-script --reporter spec

Thanks to:

  • Guys at Quipper
Something went wrong with that request. Please try again.