取消定时器
🌐 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() 的承诺化变体,可以使用 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():
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.log('The immediate was aborted');
});
ac.abort(); 对于 setTimeout():
🌐 For setTimeout():
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.log('The timeout was aborted');
});
ac.abort();