directus

Форк
0
/
stall.ts 
36 строк · 939.0 Байт
1
import { performance } from 'perf_hooks';
2

3
/**
4
 * Wait a specific time to meet the stall ms. Useful in cases where you need to make sure that every
5
 * path in a function takes at least X ms (for example authenticate).
6
 *
7
 * @param {number} ms - Stall time to wait until
8
 * @param {number} start - Current start time of the function
9
 *
10
 * @example
11
 *
12
 * ```js
13
 * const STALL_TIME = 100;
14
 *
15
 * // Function will always take (at least) 100ms
16
 * async function doSomething() {
17
 *   const timeStart = performance.now();
18
 *
19
 *   if (something === true) {
20
 *     await heavy();
21
 *   }
22
 *
23
 *   stall(STALL_TIME, timeStart);
24
 *   return 'result';
25
 * }
26
 * ```
27
 */
28
export async function stall(ms: number, start: number): Promise<void> {
29
	const now = performance.now();
30
	const timeElapsed = now - start;
31
	const timeRemaining = ms - timeElapsed;
32

33
	if (timeRemaining <= 0) return;
34

35
	return new Promise((resolve) => setTimeout(resolve, timeRemaining));
36
}
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.