Skip to content

ufukbakan/virtual-timer

Repository files navigation

Virtual Timers

What is it

It creates only a single timer with specified precision (like a virtual cpu tick), and handles all timeouts and intervals in it.

Pros

  • Performance gain when you set hundreds, thousands, billions of intervals & timeouts.

Cons

  • Performances loss when you set a few intervals & timeouts.

NextJS config

Since the module provided as pure ts files, you need to add this config to your NextJS project:

// next.config.mjs

/** @type {import('next').NextConfig} */
const nextConfig = {
    transpilePackages: ["virtual-timer"]
};

export default nextConfig;

Usage

import { VirtualTimer } from "virtual-timer";

const virtualTimer = new VirtualTimer();
virtualTimer.timeout(
    (delta) => { console.log(`Timeout running after ${delta} ms`) },
    1000
);
virtualTimer.interval(
    (delta) => { console.log(`Interval running after ${delta} ms`) },
    1000
);

You may specify precision (lower is more precise)

const virtualTimer = new VirtualTimer(5);

You may not use delta:

virtualTimer.timeout(
    () => { console.log("delta is optional") },
    1000
);

You may cancel your timeouts & intervals:

const controller = virtualTimer.timeout(
    () => { console.log("you won't see me") },
    1000
);
controller.cancel()

About

A single timer virtually runs other timers

Resources

Stars

Watchers

Forks

Packages

No packages published