取消定时器
¥Cancelling timers
setImmediate()
、setInterval()
和 setTimeout()
方法各自返回表示调度的定时器的对象。这些可用于取消定时器并防止其触发。
¥The setImmediate()
, setInterval()
, and setTimeout()
methods
each return objects that represent the scheduled timers. These can be used to
cancel the timer and prevent it from triggering.
对于 setImmediate()
和 setTimeout()
的 promise 化变体,可以使用 AbortController
来取消定时器。当取消时,返回的 Promise 将使用 'AbortError'
拒绝。
¥For the promisified variants of setImmediate()
and setTimeout()
,
an AbortController
may be used to cancel the timer. When canceled, the
returned Promises will be rejected with an 'AbortError'
.
对于 setImmediate()
:
¥For setImmediate()
:
import { setImmediate as setImmediatePromise } from 'node:timers/promises';
const ac = new AbortController();
const signal = ac.signal;
// We do not `await` the promise so `ac.abort()` is called concurrently.
setImmediatePromise('foobar', { signal })
.then(console.log)
.catch((err) => {
if (err.name === 'AbortError')
console.error('The immediate was aborted');
});
ac.abort();
const { setImmediate: setImmediatePromise } = require('node:timers/promises');
const ac = new AbortController();
const signal = ac.signal;
setImmediatePromise('foobar', { signal })
.then(console.log)
.catch((err) => {
if (err.name === 'AbortError')
console.error('The immediate was aborted');
});
ac.abort();
对于 setTimeout()
:
¥For setTimeout()
:
import { setTimeout as setTimeoutPromise } from 'node:timers/promises';
const ac = new AbortController();
const signal = ac.signal;
// We do not `await` the promise so `ac.abort()` is called concurrently.
setTimeoutPromise(1000, 'foobar', { signal })
.then(console.log)
.catch((err) => {
if (err.name === 'AbortError')
console.error('The timeout was aborted');
});
ac.abort();
const { setTimeout: setTimeoutPromise } = require('node:timers/promises');
const ac = new AbortController();
const signal = ac.signal;
setTimeoutPromise(1000, 'foobar', { signal })
.then(console.log)
.catch((err) => {
if (err.name === 'AbortError')
console.error('The timeout was aborted');
});
ac.abort();