jQuery源码分析之Callbacks详解

2020-05-23 06:21:26易采站长站整理

                auto = option.auto && data; //在这里,如果配置要求记忆最后的参数,则记忆这个参数(非常犀利的用法,直接取了数据)
                fired = true;
                firingIndex = firingStart || 0;
                firingStart = 0;//清空firingStart(不清空下次执行有出问题啦)
                firingLength = list.length;         //缓存list长度,外界可以访问
                firing = true; //正在执行回调函数
                for (; firingIndex < firingLength; firingIndex++) {
                    if (list[firingIndex].apply(data[0], data[1]) === false) {
                        //注意,如果配置了option.auto(自动执行),并且stack(栈)里存在函数,那么add()代码里有一段对于auto判定会直接执行本方法的代码
                        //我们要阻止掉那段代码,所以设置auto为false
                        auto = false;
                        break;
                    }//当函数返回false,终止执行后续队列
                }
                firing = false; //标志状态已经执行完毕回调函数[stack(栈)里面的函数尚未执行]                //如果这个栈在没有配置once的情况下肯定是[],所以一定存在
                //这里主要作用是,如果没有配置once,则拦截下面的代码,如果配置了once,执行完代码清空数据
                if (stack) {