---
title: "k6/timers | Grafana k6 documentation"
description: "k6 timers API"
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# k6/timers

The [`k6/timers` module](/docs/k6/v2.3.x/javascript-api/k6-timers/) implements timers to work with k6’s event loop. They mimic the functionality found in browsers and other JavaScript runtimes.

Expand table

| Function                                                                      | Description                                          |
|-------------------------------------------------------------------------------|------------------------------------------------------|
| [setTimeout](https://developer.mozilla.org/en-US/docs/Web/API/setTimeout)     | Sets a function to be run after a given timeout.     |
| [clearTimeout](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout) | Clears a previously set timeout with `setTimeout`.   |
| [setInterval](https://developer.mozilla.org/en-US/docs/Web/API/setInterval)   | Sets a function to be run on a given interval.       |
| [clearInterval](https://developer.mozilla.org/en-US/docs/Web/API/setInterval) | Clears 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](/docs/k6/v2.3.x/using-k6/feature-flags/), `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 ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```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);
}
```
