摘要:若是函数,则只需要写函数名,可以不加双引号和括号必需。返回值返回整型定时器也就是这个的唯一标示符。取消定时器利用取消运行机制性能性能较优稳定性更稳定链式调用实现作用域相关经典面试题为每个定时器处理函数创建不同的变量副本。
setTimeout | setInterval | ||
---|---|---|---|
描述 | 实现的是根据给定的时间间隔,每隔一段时间调用一次函数或执行一次代码 | 实现的是根据给定的时间,在经过该时间之后只调用一次函数或执行一次代码 | |
语法 | setTimeout (callback, delay, arg1, ..., argn) | setInterval (callback, interval, arg1, ..., argn) | |
参数 | callback | 必需。要调用的函数或要执行的代码串。(若是函数,则只需要写函数名,可以不加双引号和括号) | |
delay / interval | 必需。在执行代码前需等待的毫秒数。 | ||
arg1, ..., argn | 可选。给回调函数的传参。 | ||
返回值 | 返回整型定时器id,也就是这个setTimeout/setInterval 的唯一标示符。 | ||
取消定时器 | 利用 clearTimeout(id) 取消 | ||
运行机制 | |||
性能 | 性能较优 | ||
稳定性 | 更稳定 |
var interval = 3 * 1000, count = 0; function someOpration(){ var startTime = new Date(); console.log(startTime.toLocaleString() + " " + startTime.getMilliseconds()); var sum = 0; for(let i=0; i < 2000000000; i++){ sum += i; } var endTime = new Date(); console.log(endTime.toLocaleString() + " " + endTime.getMilliseconds()); var duration = endTime - startTime; console.log(duration); }
setTimeout 链式调用
function slow1(){ if(count < 5){ someOpration(); count = count + 1; setTimeout(slow1, interval); } } setTimeout(slow1, interval);
setInterval 实现
var interval = 3 * 1000, count = 0; function slow2(){ if(count < 5){ someOpration(); count = count + 1; } else { clearTimeout(timerId); } } var timerId = setInterval(slow2, interval)setTimeout作用域相关经典面试题
for (var i = 1; i <= 2; i++) { setTimeout(function() { alert(i) }, 100); } // 3 // 3为每个定时器处理函数创建不同的“i”变量副本。比如这样
for (var i = 1; i <= 2; ++i){ doSetTimeout(i); } function doSetTimeout(i) { setTimeout(function() { alert(i); }, 100); }可简写为
for (var i = 1; i <= 2; i++) { setTimeout(function(j) { console.log(j) }, 100, i); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/99024.html
摘要:浏览器与的异同,以及部分机制有人对部分迷惑,本身构造函数是同步的,是异步。浏览器的的已全部分析完成,过程中引用阮一峰博客,知乎,部分文章内容,侵删。 浏览器与NodeJS的EventLoop异同,以及部分机制 PS:有人对promise部分迷惑,Promise本身构造函数是同步的,.then是异步。---- 2018/7/6 22:35修改 javascript 是一门单线程的脚本...
摘要:定时器方法相关方法有四种。返回值返回值是一个正整数,表示定时器的编号。这个值可以传递给来取消该定时器。使用方法很简单只有一个参数,该参数为您要取消定时器的标识符。用法很简单当代码运行到这行的时候,会取消所设置的定时器。 简单介绍在JavaScript中定时器有两个 setInterval() 与 setTime...
摘要:当间隔时间设置较小时,将会导致回调函数堆积。处理可能阻塞的代码最简单且最可控的方式就是在回调函数内部使用函数。但是很明显,由于指定最大值的限制,还会有定时器没有被清除掉。另外,尽量避免使用函数,从而避免可能导致的回调函数堆积现象。 由于 Javascript 是异步的,因此我们可以通过 setTimeout 和 setInterval 函数来指定特定时间执行代码。 function ...
阅读 1170·2021-11-24 11:16
阅读 3405·2021-11-15 11:38
阅读 1872·2021-10-20 13:47
阅读 518·2021-09-29 09:35
阅读 2157·2021-09-22 15:17
阅读 977·2021-09-07 09:59
阅读 3346·2019-08-30 13:21
阅读 2875·2019-08-30 12:47