3
4

More than 5 years have passed since last update.

jQuery Callbacksの基本的な使い方2

Last updated at Posted at 2015-06-02

Callbacksオブジェクト生成時のオプション

Callbacksオブジェクトは生成時に下記のオプションを指定可能です。これらは複数組み合わせて使用することが可能です。

・once ・・・ 一度だけしかfireできない
・memory ・・・ あとから追加した関数に対しても、fireを実行する
・unique ・・・ 同じメソッドを複数回登録できないようにする
・stopOnFalse ・・・実行した関数の戻り値がfalseの場合、以降の処理を行わない

実際の動きをみてみましょう

onceオプション

function hello(){
    console.log("Hello");
}
var callback=$.Callbacks("once");
callback.add(hello);
callback.fire();
callback.fire();

実行結果
Hello

onceオプションを指定しているので、fireメソッドを2回実行しても、1回しか実行されません。

memoryオプション

function hello(){
    console.log("Hello");
}
function world(){
    console.log("World");
}

var callback=$.Callbacks("memory");
callback.add(hello);
callback.fire();
callback.add(world);

実行結果
Hello
World

fire後にaddした関数も実行されました。
このように、memoryオプションを指定すると、あとから追加した関数に対しても、それ以前に実行したfireが適用されます。
これはonceを同時に指定した場合も同様の動きをします。(1回目のfireは後からaddした関数に対しても実行される)

uniqueオプション

function hello(){
    console.log("Hello");
}
function world(){
    console.log("World");
}

var callback=$.Callbacks("unique");
callback.add(hello);
callback.add(hello);
callback.add(world);
callback.fire();

実行結果
Hello
World

hello関数を2回登録しましたが、1回しか実行されませんでした。
uniqueオプションを指定すると、同じ関数オブジェクトを追加しても、重複して実行されることはありません。

stopOnFalseオプション

function hello(){
    console.log("Hello");
    return false;
}
function world(){
    console.log("World");
}

var callback=$.Callbacks("stopOnFalse");
callback.add(hello);
callback.add(world);
callback.fire();

実行結果
Hello

最初に追加した関数しか実行されませんでした。
このように、@stopOnFalse`を指定した場合、追加した関数がfalse返すと後続の処理が行われません。
ちなみにnullやundefind , 0 , -1 等が返った場合は後続の処理が実行されます。
あくまでfalseが返った場合のみに有効になるオプションです。

3
4
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
3
4