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>
演示结果