计划调用( scheduling a call)
等待特定一段时间后再执行函数
1. 引用函数只用名字,不用加括号(加了括号==调用函数)
2. setTimeout 取消=> cleartimeout setInterval 取消=> clearInterval
3. alert弹窗时计时器仍在工作
4. 嵌套setTimeout比setInterval更灵活:精准设置两次执行间的延时
/** instead of:
let timerId = setInterval(() => alert('tick'), 2000);
*/
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000); // (*)
}, 2000);
-----------------------------------------------
let delay = 5000;
let timerId = setTimeout(function request() {
...发送请求...
if (request failed due to server overload) {
// 下一次执行的间隔是当前的 2 倍
delay *= 2;
}
timerId = setTimeout(request, delay);
}, delay);
5. setInterval中实际调用的间隔要比设置的间隔短
因为func的执行时间“消耗”了一部分间隔时间

setInterval.png

嵌套setTimeout.png

任务.png
function printNumbers(from, to){
let delay = 1000;
let timer = setInterval(
()=>{
while (to >= from){
alert(from ++)
}
}, delay
)
}
function printNumbers(from, to){
let delay = 1000;
let timer = setTimeout(function run(){
if(to >= from){
alert(from ++)
}
setTimeout(run, delay)
}, delay
)
}