让我知道设置clearTimeout和将相同变量设置为null之间的区别,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;
};
};它最终将"timeout“变量设置为"null”,而不是使用clearTimeOut。
发布于 2017-02-13 04:50:09
如果调度函数尚未运行,clearTimeout实际上会取消它。所以当它。
当计划时间在当前时间之前时,这段代码将超时设置为null,因此它将其设置为null以清除值,以便其他代码知道没有超时等待。因为这段代码不需要取消超时,所以它不使用clearTimeout。
基本上,clearTimeout和取消变量之间没有任何关系。
https://stackoverflow.com/questions/42196727
复制相似问题