LoginSignup
6
6

More than 5 years have passed since last update.

$.Deferredを返す関数が、resolveされると登録された順に実行されるイベントキュー

Posted at

用途としては、ユーザーに通知する popup animation を順番に出す、みたいなのを想定している。

class DeferredQueue
  constructor: ->
    @head = $.Deferred()
    @cur = @head

  addQueue: (deferred_func) ->
    @cur = @cur.pipe deferred_func

  popStart: ->
    @head.resolve()
    @head = $.Deferred()

# how to use
popupQueue = new DeferredQueue
popupQueue.addQueue ->
  d = $.Deferred()
  setTimeout ->
    console.log "deferred queues 1"
    d.resolve()
  , 5500
  d.promise()

popupQueue.addQueue ->
  d = $.Deferred()
  setTimeout ->
    console.log "deferred queues 2"
    d.resolve()
  , 1500
  d.promise()

popupQueue.popStart()
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6