Takazudo hamalog

programming notes. mainly about JavaScript / jQuery. [@Takazudo] [takazudo@gmail.com] Hint: alt + /

cool guy

jQuery1.7で追加された$.Callbacks

2011/10/21 permalink

コレは何か?コールバック集めてまとめて発火させたり削除したりダブって登録されたりしないようにしてくれるやつ。ちょっと便利なオブザーバーだけど、jQuery内部のコードでオブザーバー的な動きをしていたのがこれにより抽象化された風。詳しくは以下を見るべき。(この記事を書いてる時点ではjQuery1.7 beta2)

自分はこういう単純なオブザーバーをつくるとき、$({}) を作ってこいつにカスタムイベントをbindしてtriggerしてみたいなことをしてたので、同じようなことをしてた人はあーそういうやつねと思うかもしれないです。こいつが登場して便利になるのは、「より細かくコールバックを管理できるようになった」ってことかと思います。とりあえずこれいままで出来なかったよねっていうのでちょっと思いついたやつが以下。ちょっと試しただけなので雑です。

wootボタンを押すと右下行ったり左上行ったりする。で、doneでおわったってログだすけど、ボタン押しただけ出ちゃう。deferredは便利だが、細かいコールバックの制御はできない。resolveするかrejectするかのみ。それにアニメは常にresolveされるので細かいことしようとするとかなりややこい。

なにいってんのstopで止めればいいだけじゃんといわれればまぁそう。でも次のサンプルでやっていることはできない。

このサンプルはボタンが2個ある。右のボタンは、コールバックを空にするやつ。アニメ中にこれを押すと、予約したコールバックを空にする。これによって、アニメは止まらないけどコールバックだけを削除することができた。前の2つの例だと、予約したコールバックをキャンセルすることができない。(というかやろうと思えばできるけどそうするとこういう$.Callbacksみたいなやつを自作するハメになる)

たぶんこんな感じでコールバックを自由に細かくいじるために使うんだと思われる。コールバックが破棄できるようになったりしたっていう理解でいいのではないかと思う。

blog comments powered by Disqus

  1. kzkztommyhamalogからリブログしました
  2. isora1988hamalogからリブログして、コメントを追加しました:
    Takazudo hamalog: jQuery1.7で追加された$.Callbacks
  3. atm09tdfingaholicからリブログして、コメントを追加しました:
    コレは何か?コールバック集めてまとめて発火させたり削除したりダブって登録されたりしないようにしてくれるやつ。ちょっと便利なオブザーバーだけど、jQuery内部のコードでオブザーバー的な動きをしていたのがこれにより抽象化された風。詳しくは以下を...
  4. fingaholichamalogからリブログしました
  5. yoshi001hamalogからリブログしました
  6. hamalogの投稿です