NodeJs-timer-预定定时器和取消定时器

Node.js 中的定时器是一种会在一段时间后调用给定的函数的内部构造。 何时调用定时器函数取决于用来创建定时器的方法以及 Node.js 事件循环正在执行的其他工作。

setImmediate(callback[, …args])

  • callback  在当前回合的 Node.js 事件循环结束时调用的函数。
  • ...args <any> 当调用 callback 时传入的可选参数。
  • 返回:  用于 clearImmediate()

预定在 I/O 事件的回调之后立即执行的 callback。 当多次调用 setImmediate() 时, callback 函数将按照创建它们的顺序排队等待执行。 每次事件循环迭代都会处理整个回调队列。 如果立即定时器是从正在执行的回调排入队列,则直到下一次事件循环迭代才会触发。 如果 callback 不是函数,则抛出 TypeError。 此方法具有使用 util.promisify() 的用于 Promise 的自定义变体:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const util = require('util');
const setImmediatePromise = util.promisify(setImmediate);

setImmediatePromise('foobar').then((value) => {
// value === 'foobar' (传值是可选的)
// 在所有 I/O 回调之后执行。
});

// 或使用异步功能。
async function timerExample() {
console.log('在 I/O 回调之前');
await setImmediatePromise();
console.log('在 I/O 回调之后');
}
timerExample();

setInterval(callback, delay[, …args])

  • callback  当定时器到点时调用的函数。
  • delay <number> 调用 callback 之前等待的毫秒数。
  • ...args <any> 当调用 callback 时传入的可选参数。
  • 返回:  用于 clearInterval()

预定每隔 delay 毫秒重复执行 callback。 当 delay 大于 2147483647 或小于 1 时, delay 将设置为 1。 如果 callback 不是函数,则抛出 TypeError

setTimeout(callback, delay[, …args])

  • callback  当定时器到点时调用的函数。
  • delay <number> 调用 callback 之前等待的毫秒数。
  • ...args <any> 当调用 callback 时传入的可选参数。
  • 返回:  用于 clearTimeout()

预定在 delay 毫秒之后执行一次性的 callback。 可能不会精确地在 delay 毫秒时调用 callback。 Node.js 不保证回调被触发的确切时间,也不保证它们的顺序。 回调会在尽可能接近指定的时间调用。 当 delay 大于 2147483647 或小于 1 时, delay 将设置为 1。 如果 callback 不是函数,则抛出 TypeError。 此方法具有使用 util.promisify() 的用于 Promise 的自定义变体:

1
2
3
4
5
6
7
const util = require('util');
const setTimeoutPromise = util.promisify(setTimeout);

setTimeoutPromise(40, 'foobar').then((value) => {
// value === 'foobar' (传值是可选的)
// 在大约 40 毫秒后执行。
});
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2023 翟天野

请我喝杯咖啡吧~