• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • callbacks.lock()

    锁定回调列表的当前状态。

    callbacks.lock()
    • 这个方法不接受任何参数

    此方法返回其绑定的Callbacks对象(this)。

    如果使用"memory"标志作为参数创建Callbacks对象,则锁定回调列表后,可能会添加并触发其他功能。

    例子

    callbacks.lock()锁定一个回调列表,以避免进一步的修改列表状态:

    // a sample logging function to be added to a callbacks list
    var 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 results
    var log = function( value) {
      $( "#log" ).append( "<p>" + value + "</p>" );
    };
     
    // two sample functions to be added to a callbacks list
    var foo = function( value ) {
      log( "foo: " + value );
    };
    var bar = function( value ) {
      log( "bar: " + value );
    };
     
    // create the callbacks object with the "memory" flag
    var 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>