window定时器
◼ 有时我们并不想立即执行一个函数,而是等待特定一段时间之后再执行,我们称之为“计划调用(scheduling a call)”。
◼ 目前有两种方式可以实现:setTimeout 允许我们将函数推迟到一段时间间隔之后再执行。setInterval 允许我们重复运行一个函数,从一段时间间隔之后开始运行,之后以该时间间隔连续重复运行该函数。
◼ 并且通常情况下有提供对应的取消方法:clearTimeout:取消setTimeout的定时器;clearInterval:取消setInterval的定时器;
◼ 大多数运行环境都有内置的调度程序,并且提供了这些方法:目前来讲,所有浏览器以及Node.js 都支持这两个方法;所以我们后续学习Node的时候,也可以在Node中使用它们;
setTimeout的使用
◼ setTimeout的语法如下:
let timerId = setTimeout(func|code,[delay],[arg1],[arg2],.....) func|code:想要执行的函数或代码字符串。➢ 一般传入的都是函数,由于某些历史原因,支持传入代码字符串,但是不建议这样做; delay:执行前的延时,以毫秒为单位(1000 毫秒= 1 秒),默认值是0; arg1,arg2…:要传入被执行函数(或代码字符串)的参数列表;
◼ clearTimeout方法: setTimeout 在调用时会返回一个“定时器标识符(timer identifier)”,我们可以使用它来取消执行。
案例:// 拿到定时器标识符 timeOutIDvar timeOutID = window.setTimeout(function(){console.log("foo被调用---")},1000)// console.log(timeOutID)var timeOutEl = document.querySelector("button")timeOutEl.onclick = function(){// 取消调用clearTimeout(timeOutID)}
setInterval的使用
◼ setInterval 方法和 setTimeout的语法相同:
let timerId = setInterval(func|code,[delay],[arg1],[arg2],.....) 所有参数的意义也是相同的; 不过与setTimeout只执行一次不同,setInterval是每间隔给定的时间周期性执行;
◼ clearInterval方法:setInterval也会返回一个“定时器标识符(timer identifier)”,我们可以通过clearInterval来取消这个定时器。
◼ 关于定时器还有一些宏任务相关的概念,我们会在JavaScript高级中讲解。