Skip to content

Instantly share code, notes, and snippets.

View helloris25's full-sized avatar
😎

Ilia Ruchevskii helloris25

😎
View GitHub Profile
@helloris25
helloris25 / retry.js
Created May 15, 2019 12:00
Retry async function when was reject
async function retry(fn, retriesLeft = 5, interval = 1000, exponential = false) {
try {
const val = await fn();
return val;
} catch (error) {
if (retriesLeft) {
await new Promise(r => setTimeout(r, interval));
return retry(fn, retriesLeft - 1, exponential ? interval * 2 : interval, exponential);
} else throw new Error('Max retries reached');
}
@helloris25
helloris25 / index.js
Last active January 22, 2020 12:35
Не ставить фокус по клику на элемент
/*
Проблема заключалась в следующем: когда имеется интерактивный элемент с :focus стилем и вы щелкаете по этому элементу, на нём остаётся focus стиль (outline обводка).
У нативной кнопки всё работает as expected, но стоит её добавить любой стиль и, как побочный эффект, меняется её поведение.
Конечно outline можно убрать, но с интерактивными элементам так делать не стоит, так как он обеспечивает визуальную обратную связь для элементов, которые имеют «фокус» при навигации по документу с помощью клавиши TAB (или эквивалентной).
Это особенно полезно для людей, которые не могут использовать мышь или имеют нарушения зрения.
Если вы удалите outline, вы сделаете свой сайт недоступным для этих людей.
*/
// РЕШЕНИЕ 1
document
function memo(fn) {
const cache = new Map();
return function () {
if (!cache.has(fn)) {
cache.set(fn, new Map());
}
const argsKey = JSON.stringify(arguments);