diff --git a/packages/stdlib/src/async/index.ts b/packages/stdlib/src/async/index.ts index e69de29..1d96a50 100644 --- a/packages/stdlib/src/async/index.ts +++ b/packages/stdlib/src/async/index.ts @@ -0,0 +1,2 @@ +export * from './sleep'; +export * from './tryIt'; diff --git a/packages/stdlib/src/async/sleep/index.test.ts b/packages/stdlib/src/async/sleep/index.test.ts new file mode 100644 index 0000000..c86384d --- /dev/null +++ b/packages/stdlib/src/async/sleep/index.test.ts @@ -0,0 +1,19 @@ +import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'; +import { sleep } from '.'; + +describe('sleep', () => { + beforeEach(() => { + vi.useFakeTimers({ shouldAdvanceTime: true }); + }); + + it('delay execution by the specified amount of time', async () => { + const start = performance.now(); + const delay = 100; + + await sleep(delay); + + const end = performance.now(); + + expect(end - start).toBeGreaterThanOrEqual(delay); + }); +}); \ No newline at end of file diff --git a/packages/stdlib/src/async/sleep/index.ts b/packages/stdlib/src/async/sleep/index.ts new file mode 100644 index 0000000..94a50d9 --- /dev/null +++ b/packages/stdlib/src/async/sleep/index.ts @@ -0,0 +1,19 @@ +/** + * @name sleep + * @category Async + * @description Delays the execution of the current function by the specified amount of time + * + * @param {number} ms - The amount of time to delay the execution of the current function + * @returns {Promise} - A promise that resolves after the specified amount of time + * + * @example + * await sleep(1000); + * + * @example + * sleep(1000).then(() => { + * console.log('Hello, World!'); + * }); + */ +export function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} \ No newline at end of file