node - 定时调度 (下篇)

254 阅读2分钟

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战

# node - 定时调度 (上篇)

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的异同

setIntervalsetTimeout这两个方法的参数是一样的,其区别在于定时执行的时间不同。

setInterval是每间隔一定时间执行一次,循环往复。例如, 每隔1秒执行一次,60秒过去后执行了60次。setTimeout是过了一定时间执行一次,只执行一次。例如,隔1秒后执行一次,过了十万八千秒后也只在第一次秒执行了一次。

取消定时

setImmediate()setInterval()setTimeout()方法各自返回表示预定的定时器的对象。它们可用于取消定时器并防止其触发。

无法取消使用setImmediate()setTimeout()Promise化的变体创建的定时器。

最后

公众号:小何成长,佛系更文,都是自己曾经踩过的坑或者是学到的东西

有兴趣的小伙伴欢迎关注我哦,我是:何小玍。大家一起进步鸭