callbacks.lock()
分类:Callbacks对象
返回: Callbacks
callbacks.lock()
描述:把某个回调函数锁定在当前状态。
加入于: 1.7
callbacks.lock()该方法不接受任何参数。
该方法返回它要附加到的Callbacks对象(this
)。
如果创建该Callbacks对象时,带了"memory"
标志作为它的参数,可以在该回调函数列表被锁定之后添加额外的函数,并再次引发。
示例
使用callbacks.lock()
以锁定一个回调函数列表,以避免对该列表的状态作进一步改变。
// 一个示例的记录函数,用来添加到一个回调函数列表中 var foo = function( value ) { console.log( "foo:" + value ); }; var callbacks = $.Callbacks(); // 把记录方法添加到回调函数列表 callbacks.add( foo ); // 引发列表中的项目,传入一个参数 callbacks.fire( "hello" ); // 输出"foo: hello" // 锁定回调函数列表 callbacks.lock(); // 尝试再次引发该项目 callbacks.fire( "world" ); // 因为列表被锁定了,所以没有调用任何项目 // 所以没有记录“world”
使用callbacks.lock()
以带“memory”锁定一个回调函数列表,然后恢复使用该列表:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>callbacks.lock demo</title> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div id="log"></div> <script> // 用来记录结果的函数 var log = function( value ) { $( "#log" ).append( "<p>" + value + "</p>" ); }; // 两个添加到回调函数列表中的示例函数 var foo = function( value ) { log( "foo: " + value ); }; var bar = function( value ) { log( "bar: " + value ); }; // 带“memory”标志创建callbacks对象 var callbacks = $.Callbacks( "memory" ); // 向回调函数列表添加foo记录函数 callbacks.add( foo ); // 引发列表中的项目,传入一个参数 callbacks.fire( "hello" ); // 输出"foo: hello" // 锁定架设函数列表 callbacks.lock(); // 再次尝试引发该项目 callbacks.fire( "world" ); // 因为列表被锁定了,所以没有调用任何项目 // 所以没有记录“foo: world” // 再次把foo函数添加到回调函数列表中 callbacks.add( foo ); // 再次尝试引发它 callbacks.fire( "silentArgument" ); // 输出“foo: hello”因为参数值没有保存在内存中 // 把bar函数添加到回调函数列表中 callbacks.add( bar ); callbacks.fire( "youHadMeAtHello" ); // 输出“bar: hello”因为列表依然被锁定着 // 而且参数值依然保存在内存中 </script> </body> </html>
演示结果