[ Web Proxy ]
URL:
Viewing: https://developers.cloudflare.com/workers/runtime-apis/nodejs/timers/ [Back]  [Original]

timers Cloudflare Workers docsSkip to content
SearchCtrlKLog in
  1. Home
  2. /Workers
  3. /
  4. /Node.js compatibility
  5. /timers

timers

Last updated Apr 23, 2026Copy as MarkdownView as MarkdownAgent setup

Note

For compatibility dates of 2026-08-04 or later, Workers enables both nodejs_compat and nodejs_compat_v2 by default. These flags are not used for these compatibility dates. Existing projects do not need to remove them when updating their compatibility date. For earlier dates, add nodejs_compat to your Wrangler configuration file to opt in. For instructions to turn off Node.js compatibility, refer to the Node.js compatibility flag.

Use node:timers APIs to schedule functions to be executed later.

This includes setTimeout for calling a function after a delay, setInterval for calling a function repeatedly, and setImmediate for calling a function in the next iteration of the event loop.

index.jsjs
import timers from "node:timers";

export default {
	async fetch() {
		console.log("first");
		const { promise: promise1, resolve: resolve1 } = Promise.withResolvers();
		const { promise: promise2, resolve: resolve2 } = Promise.withResolvers();
		timers.setTimeout(() => {
			console.log("last");
			resolve1();
		}, 10);

		timers.setTimeout(() => {
			console.log("next");
			resolve2();
		});

		await Promise.all([promise1, promise2]);

		return new Response("ok");
	},
};
index.tsts
import timers from "node:timers";

export default {
  async fetch(): Promise<Response> {
    console.log("first");
    const { promise: promise1, resolve: resolve1 } = Promise.withResolvers<void>();
    const { promise: promise2, resolve: resolve2 } = Promise.withResolvers<void>();
    timers.setTimeout(() => {
      console.log("last");
      resolve1();
    }, 10);

    timers.setTimeout(() => {
      console.log("next");
      resolve2();
    });

    await Promise.all([promise1, promise2]);

    return new Response("ok");
  }
} satisfies ExportedHandler<Env>;

Note

Due to security-based restrictions on timers in Workers, timers are limited to returning the time of the last I/O. This means that while setTimeout, setInterval, and setImmediate will defer your function execution until after other events have run, they will not delay them for the full time specified.

Note

When called from a global level (on globalThis ), functions such as clearTimeout and setTimeout will respect web standards rather than Node.js-specific functionality. For complete Node.js compatibility, you must call functions from the node:timers module.

The full node:timers API is documented in the Node.js documentation for node:timers .

PrevioustestNexttls

Was this helpful?

YesNo
Edit pageReport issue
[]

Web Proxy Viewer  |  New URL  |  Original Page