jquery – $.Callbacks().disable()vs $.Callbacks().lock()

前端之家收集整理的这篇文章主要介绍了jquery – $.Callbacks().disable()vs $.Callbacks().lock()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
两者的jQuery文档基本上都说明了同样的事情,所以我想知道两者之间是否存在任何重大差异(如果有的话).谢谢!

解决方法

关于这个的文档实际上非常糟糕,所以这是我在 studying the source code找到的:

lock仅阻止将来的fire调用,但不会阻止函数add.

以下是方法快速概述:

> empty删除目前已注册的任何回调.
> lock – 防止进一步调用触发,但允许添加更多回调.
> disable – 防止进一步打电话给火警和加.

要理解这一切,让我们从the memory flag的解释开始:

如果回调对象是使用内存标志构造的,它将跟踪最后一次触发调用,稍后添加的任何回调将立即被调用.这是an example

var callbacks = $.Callbacks('memory');

callbacks.add(function(){
    console.log('first');
});

callbacks.fire();

callbacks.add(function(){
    console.log('second');
});

这也将记录第二,即使它是在火警之后添加的.

如果你禁用它,它将完全擦除内存.这是another example

var callbacks = $.Callbacks('memory');

callbacks.add(function(){
    console.log('first');
});

callbacks.fire();
callbacks.disable();

callbacks.add(function(){
    console.log('second');
});

callbacks.fire();

这只会先记录,因为在添加第二个函数之前已经禁用了回调.

但是,如果您使用锁定它,则会调用稍后添加函数.这是another example

var callbacks = $.Callbacks('memory');

callbacks.add(function(){
    console.log('first');
});

callbacks.fire();
callbacks.lock();

callbacks.add(function(){
    console.log('second');
});

callbacks.fire();

这也将记录第二,但只记录一次;由于对象已被锁定,因此将忽略对火的任何进一步调用.

猜你在找的jQuery相关文章