这是jQuery Callback的错误吗?

时间:2014-08-18 10:46:50

标签: javascript jquery jquery-callback

我目前正在研究jQuery 1.8.1的源代码,发现jQuery可能有问题:

首先,使用disable()停用回调,然后调用empty(),然后使用add()添加功能,最后调用fire(),因为API解释了disable() 1}}:

  

禁止回调列表执行更多操作

fire()的最后一次调用不应该输出任何内容,但实际上,它输出'2'就好像没有调用disable()一样;

var a = $.Callbacks();
a.add(function(){console.log('1');});
a.disable();
a.disabled();  //true
a.empty();
a.add(function(){console.log('2');});
a.fire();   //2

这是一个jQuery错误吗?

1 个答案:

答案 0 :(得分:3)

这不是jQuery中的错误,至少不在disable内。调用disable确实使回调对象在所有实际用途中都是惰性的。

您的代码示例也会调用empty,它会重新初始化回调对象,并在此过程中将其返回到可用状态。 可能是一个错误,因为没有记录empty来执行此操作。

删除对empty的调用显然会导致预期的行为。