timers.runAll()


新增于: v20.4.0, v18.19.0

立即触发所有挂起的模拟计时器。如果 Date 对象也被模拟,它也会将 Date 对象推进到最远计时器的时间。

🌐 Triggers all pending mocked timers immediately. If the Date object is also mocked, it will also advance the Date object to the furthest timer's time.

下面的示例会立即触发所有待处理的计时器,使它们无需任何延迟就执行。

🌐 The example below triggers all pending timers immediately, causing them to execute without any delay.

import assert from 'node:assert';
import { test } from 'node:test';
test('runAll functions following the given order', (context) => {
 context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
 const results = [];
 setTimeout(() => results.push(1), 9999);
 // Notice that if both timers have the same timeout,
 // the order of execution is guaranteed
 setTimeout(() => results.push(3), 8888);
 setTimeout(() => results.push(2), 8888);
 assert.deepStrictEqual(results, []);
 context.mock.timers.runAll();
 assert.deepStrictEqual(results, [3, 2, 1]);
 // The Date object is also advanced to the furthest timer's time
 assert.strictEqual(Date.now(), 9999);
});const assert = require('node:assert');
const { test } = require('node:test');
test('runAll functions following the given order', (context) => {
 context.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
 const results = [];
 setTimeout(() => results.push(1), 9999);
 // Notice that if both timers have the same timeout,
 // the order of execution is guaranteed
 setTimeout(() => results.push(3), 8888);
 setTimeout(() => results.push(2), 8888);
 assert.deepStrictEqual(results, []);
 context.mock.timers.runAll();
 assert.deepStrictEqual(results, [3, 2, 1]);
 // The Date object is also advanced to the furthest timer's time
 assert.strictEqual(Date.now(), 9999);
});

注意: runAll() 函数专门用于在定时器模拟的环境中触发定时器。它不会对真实系统时钟或模拟环境之外的实际定时器产生任何影响。

AltStyle によって変換されたページ (->オリジナル) /