基本知识
setTimeout(fn,t),超时调用,超过时间t,就执行fn。
setInterval(fn,t),间歇调用,调用周期t,执行fn。
二者调用后,均返回一个数值ID,此ID是计划执行代码的唯一标识符,可以通过它来取消尚未执行的调用。
clearTimeout(id)和clearInterval(id)。取消间歇调用的重要性要远远高于取消超时调用,因为在不加干涉的情况下,间歇调用将会一直执行到页面卸载。
重点
JS是一个单线程的解释器,因此一段时间内只能执行一段代码。为了要控制执行的代码,就有一个JS任务队列。这些任务会按照将它们添加到队列的顺序执行。
1、setTimeout(fn,t)中t告诉JS再过多久把当前任务添加到队列中。并不是执行的到setTimeout就添加任务。如果队列是空,那么添加的代码会立即执行;如果队列不空,那么它就要等前面的代码执行完了以后在执行。
2、setInterval(fn,t),在间歇调用时,会出现一些意外。
let that=this;
//处理功能状态
that.intervalAction= setInterval(() => {
if ((that.configState || {}).action) {
that.setActions();
that.clearInterval(that.intervalAction);
}
}, 300);
作者:fenerchen
链接:https://www.jianshu.com/p/fc9a08ca2c92
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
文档更新时间: 2021-09-27 09:14 作者:admin