代码不复杂,逻辑很简单,就是函数节流,我直接放代码了。
理论上当我不断改变浏览器窗口大小的时候(就是说间隔肯定小于1s的),doSomthing
从第二次开始是不会被执行的。因为我在不断的执行 cleraTimeout
,实际运行结果是 console.log('第'+count+'次执行)
确实没有被打印出来,但是当我停止改变浏览器窗口的时候,发现打印出来的 count
并不是 1
,而且是一个很大的数。
这说明,在这段代码里:
timer = setTimeout(function () {
last = now
console.log('第'+count+'次执行')
fn.apply(context, args)
}, threshhold)`
setTimeout()
里的匿名函数没有被执行,但是匿名函数里的 fn.apply()
却被执行了,求大神告知原理何在啊?还是我这段代码本身有问题?
幕布斯7119047
相关分类