zepto源码callBacks模块里面的一点疑问?

zepto的callBacks模块源码:zepto中callBacks源码
在上述zepto的callBacks模块里面,我有以下疑问点:

1.stack是干嘛用的?和list的区别在哪里?为什么非要多出一个stack。

2.在fire函数里面,最后一段代码是什么逻辑,看不出用意何在:

if (list) {
    if (stack) stack.length && fire(stack.shift())
    else if (memory) list.length = 0
    else Callbacks.disable()
}

3.lock和disable的区别是什么?

clipboard.png
求zepto高手帮忙分析下,大家一起分析讨论。

阅读 2.3k
1 个回答

看着是list缓存数据用的

list = [], // Actual callback list
stack = !options.once && [], // Stack of fire calls for repeatable lists

每次判断statck是不是正确的对象,然后循环调用fire,传参每次shift数组statck,这样可以保留list的数组,保证不破坏数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题