jQuery源码分析之Callbacks详解

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

                                addCallback(item);
                            }
                        });
                    })(arguments);
                }
                if (firing)//如果当前正有回调函数在执行,那么需要更新当前回调函数列表的length,否则这个新压入的回调函数就会被掠过。
                    firingLength = list.length;
                else if (auto) {//如果当前没有执行回调函数,并且要求自动执行
                    //注意这里是给firingStart赋值,上面fire方法中正在使用的是firingIndex,这里不会影响到上面代码的执行线路
                    firingStart = start;
                    //执行我们新加入的小伙伴
                    fire(auto);
                }
                return this;
            },
            fire: function () {//触发回调函数
                self.fireWith(this, arguments);
                return this;
            },
            fireWith: function (context, args) {//触发回调函数,并指定上下文
                //如果配置了once,stack将为undefined,而once又需要保证只执行一次,所以一旦执行过一次,这里的代码不会再执行