setTimeout
setTimeout(callback, delay[, ...args])
方法,用于在上一次定时器执行的delay毫秒之后设定定时器执行时机。其中参数:callback<Function>
指在当前回合的Node.js事件循环结束时调用的函数;delay<number>
指调用callback之前等待的毫秒数;...args<any>
指当前调用callback时传入的可选参数。
可能不会精确地在delay毫秒时调用callback。Node.js不保证回调被触发的确切时间,也不保证他们的顺序。callback会在尽可能接近指定的时间调用。
同setInterval一样,当delay大于2 147 483 647(即32位整型的最大值)或小于1时,delay将设置为1.
如果callback不是函数,则抛出typeError
此方法具有使用util.promisify()
的用于Promise的自定义变体。
const util = require("util") const setTimeoutPromise = util.promisify(setTimeout) setTimeoutPromise(40, "foobar").then((valur) => { // value === "foobar"(传值是可选的) // 在大约40毫秒后执行 }) 复制代码
setInterval和setTimeout的异同
setInterval
和setTimeout
这两个方法的参数是一样的,其区别在于定时执行的时间不同。
setInterval
是每间隔一定时间执行一次,循环往复。例如, 每隔1秒执行一次,60秒过去后执行了60次。setTimeout
是过了一定时间执行一次,只执行一次。例如,隔1秒后执行一次,过了十万八千秒后也只在第一次秒执行了一次。
取消定时
setImmediate()
、 setInterval()
、setTimeout()
方法各自返回表示预定的定时器的对象。它们可用于取消定时器并防止其触发。
无法取消使用setImmediate()
、setTimeout()
的Promise
化的变体创建的定时器