今天看见一个代码,想跟大家讨论一下

var throttle = function (fn, interval) {

    var _self = fn, // 保存需要被延迟执行的函数的引用

        timer,

        firstTime = true; // 是否第一次调用


    return function () {

        var args = arguments,

            _me = this;


        if (firstTime) { // 如果是第一次,不需要延迟执行

            _self.apply(_me, args);

            return firstTime = false;

        }


        if (timer) {

            // 如果定时器还在说明前一次延迟执行还没有完成

            return false;

        }


        timer = setTimeout(function () {

            clearTimeout(timer);

            timer = null;

            _self.apply(_me, args);

        }, interval || 500);

    }

}


window.onresize = throttle(function () {

    console.log('1');

}, 500)

这段代码中判断定时器还有没执行完毕的那一句,我觉得没有必要,因为定时器里面的内容和主js执行是同一个线程,如果定时器没有执行完毕,那么其他的内容也不会执行,所以如果定时器没有执行完成,根本不会进入到下一次的判断中来,有没有大神告诉我是不是这样

千巷猫影
浏览 323回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript