设置clearTimeOut

时间:2017-02-13 04:34:22

标签: javascript settimeout

让我知道设置clearTimeout和将同一个变量设置为null之间的区别,该变量用于设置settimeout的id。

我在下面提到的underscore.js中看到了一个函数。

 function debounce(func, wait, immediate) {
    var timeout, args, context, timestamp, result;

    var later = function() {
        var last = new Date().getTime() - timestamp;

        if (last < wait && last >= 0) {
            timeout = setTimeout(later, wait - last);
        } else {
            timeout = null;
            if (!immediate) {
                result = func.apply(context, args);
                if (!timeout) context = args = null;
            }
        }
    };

    return function() {
        context = this;
        args = arguments;
        timestamp = new Date().getTime();
        var callNow = immediate && !timeout;
        if (!timeout) timeout = setTimeout(later, wait);
        if (callNow) {
            result = func.apply(context, args);
            context = args = null;
        }

        return result;
    };
};

最终确定&#34;超时&#34;变量为&#34; null&#34;而不是使用clearTimeOut。

1 个答案:

答案 0 :(得分:1)

clearTimeout实际上取消了预定的功能,如果它还没有运行。所以当它。

当调度时间在当前时间之前时,这段代码将timeout设置为null,因此它将其设置为null以清除该值,以便其他代码知道没有超时等待。 因为这段代码不需要取消超时,所以它不会使用clearTimeout

基本上,clearTimeout和取消设置变量彼此无关。