callbacks.lock()
锁定回调列表的当前状态。
callbacks.lock()
- 这个方法不接受任何参数
此方法返回其绑定的Callbacks对象(this
)。
如果使用"memory"
标志作为参数创建Callbacks
对象,则锁定回调列表后,可能会添加并触发其他功能。
例子
用callbacks.lock()
锁定一个回调列表,以避免进一步的修改列表状态:
// a sample logging function to be added to a callbacks listvar foo =function ( value ) { console.log( "foo:" + value ); };var callbacks = $.Callbacks(); // add the logging function to the callback list callbacks.add( foo ); // fire the items on the list, passing an argument callbacks.fire( "hello" ); // outputs "foo: hello" // lock the callbacks list callbacks.lock(); // try firing the items again callbacks.fire( "world" ); // as the list was locked, no items // were called, so "world" isn"t logged
使用callbacks.lock()
锁定具有"memory"回调列表,然后使用该列表继续:
<!DOCTYPE html> <html> <head> <script src="https://www.lanmper.cn/static/js/jquery-3.5.0.js"></script> </head> <body> <div id="log"></div> <script>// simple function for logging resultsvar log =function ( value) { $( "#log" ).append( "<p>" + value + "</p>" ); }; // two sample functions to be added to a callbacks listvar foo =function ( value ) { log( "foo: " + value ); };var bar =function ( value ) { log( "bar: " + value ); }; // create the callbacks object with the "memory" flagvar callbacks = $.Callbacks( "memory" ); // add the foo logging function to the callback list callbacks.add( foo ); // fire the items on the list, passing an argument callbacks.fire( "hello" ); // outputs "foo: hello" // lock the callbacks list callbacks.lock(); // try firing the items again callbacks.fire( "world" ); // as the list was locked, no items were called, // so "foo: world" isn't logged // add the foo function to the callback list again callbacks.add( foo ); // try firing the items again callbacks.fire( "silentArgument" ); // outputs "foo: hello" because the argument value was stored in memory // add the bar function to the callback list callbacks.add( bar ); callbacks.fire( "youHadMeAtHello" ); // outputs "bar: hello" because the list is still locked, // and the argument value is still stored in memory </script> </body> </html>