Open source RSS

k6/timers

The k6/timers module implements timers to work with k6’s event loop. They mimic the functionality found in browsers and other JavaScript runtimes.

FunctionDescription
setTimeoutSets a function to be run after a given timeout.
clearTimeoutClears a previously set timeout with setTimeout.
setIntervalSets a function to be run on a given interval.
clearIntervalClears a previously set interval with setInterval.

Note

The timer methods are available globally, so you can use them in your script without including an import statement.

Note

When you enable the experimental async-metric-context feature flag, setTimeout() and setInterval() capture the tags and metadata active when you register their callbacks. Each callback runs with a copy of that context. Repeating intervals reuse the original registration context for every invocation, so changes made by one invocation don’t leak into the next one or into the calling code.

Promise reactions and await continuations created inside a timer callback keep any context changes made by that callback.

Example

JavaScript
export default function () {
  const intervalId = setInterval(() => {
    console.log('This runs every 200ms');
  }, 200);

  const timeoutId = setTimeout(() => {
    console.log('This runs after 2s');

    // clear the timeout and interval to exit k6
    clearInterval(intervalId);
    clearTimeout(timeoutId);
  }, 2000);
}