Skip to content

littensy/set-timeout

Repository files navigation

GitHub Workflow Status npm version npm downloads GitHub license

A simple implementation of setTimeout and setInterval for Roblox TypeScript.

 

📦 Installation

This package is available for Roblox TypeScript on NPM:

$ npm install @rbxts/set-timeout
$ pnpm add @rbxts/set-timeout

 

📚 Usage

setTimeout(callback, time)

const cleanup = setTimeout(() => {
	print("Hello, world!");
}, 1);

cleanup();

setInterval(callback, time)

const cleanup = setInterval(() => {
	print("Hello, world!");
}, 1);

cleanup();

setCountdown(callback, time, interval)

const promise = setCountdown((secondsLeft) => {
	print(secondsLeft);
}, 3);

promise.then(() => {
	print("Done!");
});

// 3, 2, 1, Done!

throttle(callback, time, options)

Creates a throttled function that only invokes callback at most once per every wait seconds.

By default, leading and trailing are both true.

const throttled = throttle((value: number) => {
	print(`Throttled: ${value}`);
}, 1);

for (const index of $range(0, 10)) {
	throttled(index);
	task.wait(0.25);
}

// Throttled: 0
// Throttled: 4
// Throttled: 8
// Throttled: 10

debounce(callback, time, options)

Creates a debounced function that delays invoking callback until after wait seconds have elapsed since the last time the debounced function was invoked.

By default, leading is false and trailing is true.

const debounced = debounce((value: number) => {
	print(`Debounced: ${value}`);
}, 1);

for (const index of $range(0, 10)) {
	debounced(index);
	task.wait(0.25);
}

task.wait(2);
debounced(11);

// Debounced: 10
// Debounced: 11

 

📝 License

set-timeout is licensed under the MIT License.

About

Functions for setTimeout and setInterval

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published