Skip to content

Instantly share code, notes, and snippets.

View IlyaIvanchikov's full-sized avatar
🏠
Working from home

Ilya IlyaIvanchikov

🏠
Working from home
View GitHub Profile
// простая функция-пауза
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
/**
* Повторяет выполнение асинхронной операции с линейным ростом задержки
* @param {Function} operation - асинхронная функция, которую нужно выполнить
* @param {number} maxAttempts - максимальное количество попыток
* @param {number} baseDelay - начальная задержка (в мс)
* @param {number} step - насколько увеличивать задержку после каждой ошибки
*/
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
async function simpleRetry(fn, retries = 3, delay = 1000) {
try {
return await fn();
} catch (error) {
if (retries <= 0) throw error;
await sleep(delay)
return simpleRetry(fn, retries - 1, delay);
}
// Функция "сон" — приостанавливает выполнение на указанное количество миллисекунд
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
// Вычисляет задержку для каждой попытки по экспоненциальной формуле
function getBackoffTime(attempt, baseDelay, multiplier) {
// умножаем базовую задержку на фактор, возведённый в степень номера попытки
return baseDelay * Math.pow(multiplier, attempt);
}
// Основная функция повторных попыток с экспоненциальным ростом интервала
// Функция "сон" — приостанавливает выполнение на указанное количество миллисекунд
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
// Вычисляет задержку для каждой попытки по экспоненциальной формуле
function getBackoffTime(attempt, baseDelay, multiplier) {
// умножаем базовую задержку на фактор, возведённый в степень номера попытки
return baseDelay * Math.pow(multiplier, attempt);
}
// Основная функция повторных попыток с экспоненциальным ростом интервала
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
async function simpleRetry(fn, retries = 3, delay = 1000) {
try {
return await fn();
} catch (error) {
if (retries <= 0) throw error;
await sleep(delay)
return simpleRetry(fn, retries - 1, delay);
}
When declaring functions on the top-level of a module,
declare their return types.
```ts
const myFunc = (): string => {
return "hello";
};
```
One exception to this is components which return JSX.