$.Callbacks
コールバック関数を複数格納し、管理するためのリストを返します。
$.Callbacks( flags ) 1.7追加
コールバック関数を複数格納し、管理するためのリストを返します。
引数 | 説明 |
---|---|
flags | スペース区切りでコールバック処理の制御を指定します。 |
下記のメソッドを使用して、コールバック関数の管理します。
- callbacks.add()
- callbacks.remove()
- callbacks.fire()
- callbacks.disable()
例を挙げて基本的な使い方を説明します。下記のようにfn1とfn2関数が定義されていたとします。
function fn1( value ){
console.log( value );
}
function fn2( value ){
fn1("fn2 says:" + value);
return false;
}
これらの関数を$.Callbacksリストに.add()で追加し、.fire()でリストに格納した関数を順に実行させます。
var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.fire( "foo!" ); // (出力結果) foo!
callbacks.add( fn2 );
callbacks.fire( "bar!" ); // (出力結果) bar!, fn2 says: bar!
.remove()は追加した関数を削除します。
var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.fire( "foo!" ); // (出力結果) foo!
callbacks.add( fn2 );
callbacks.fire( "bar!" ); // (出力結果) bar!, fn2 says: bar!
callbacks.remove(fn2);
callbacks.fire( "foobar" );
// f2は削除されたため、foobarの出力はfn1によるものだけになります
引数のflagsについて
引数のフラグは$.Callbacks('unique stopOnFlase')のように、空白区切りで複数の組み合わせを指定する事が出来ます。
$.Callbacks( 'once' )
var callbacks = $.Callbacks( "once" );
callbacks.add( fn1 );
callbacks.fire( "foo" );
callbacks.add( fn2 );
callbacks.fire( "bar" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );
/*
(出力結果)
foo
*/
$.Callbacks( 'memory' )
var callbacks = $.Callbacks( "memory" );
callbacks.add( fn1 );
callbacks.fire( "foo" );
callbacks.add( fn2 );
callbacks.fire( "bar" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );
/*
(出力結果)
foo
fn2 says:foo
bar
fn2 says:bar
foobar
*/
$.Callbacks( 'unique' )
var callbacks = $.Callbacks( "unique" );
callbacks.add( fn1 );
callbacks.fire( "foo" );
callbacks.add( fn1 ); // repeat addition
callbacks.add( fn2 );
callbacks.fire( "bar" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );
/*
(出力結果)
foo
bar
fn2 says:bar
foobar
*/
$.Callbacks( 'stopOnFalse' )
function fn1( value ){
console.log( value );
return false;
}
function fn2( value ){
fn1("fn2 says:" + value);
return false;
}
var callbacks = $.Callbacks( "stopOnFalse");
callbacks.add( fn1 );
callbacks.fire( "foo" );
callbacks.add( fn2 );
callbacks.fire( "bar" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );
/*
(出力結果)
foo
bar
foobar
*/
$.Callbacks( 'unique memory' )
function fn1( value ){
console.log( value );
return false;
}
function fn2( value ){
fn1("fn2 says:" + value);
return false;
}
var callbacks = $.Callbacks( "unique memory" );
callbacks.add( fn1 );
callbacks.fire( "foo" );
callbacks.add( fn1 ); // repeat addition
callbacks.add( fn2 );
callbacks.fire( "bar" );
callbacks.add( fn2 );
callbacks.fire( "baz" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );
/*
(出力結果)
foo
fn2 says:foo
bar
fn2 says:bar
baz
fn2 says:baz
foobar
*/
© 2010 - 2017 STUDIO KINGDOM