Канал "Мы вам перезвоним" - это место, где вы сможете найти ответы на вопросы, которые часто встречаются на собеседованиях по фронтенду. Если вы готовитесь к интервью или просто хотите улучшить свои знания в этой области, то этот канал для вас. Здесь вы найдете как базовые, так и продвинутые вопросы по фронтенду, а также разборы сложных концепций. Не стесняйтесь присылать свои вопросы и участвовать в обсуждениях - мы всегда рады новым идеям и предложениям. Для отправки своих вопросов вы можете обращаться к @djamah. Присоединяйтесь к нашему каналу и расширяйте свои знания в области фронтенд разработки!
26 Jan, 09:04
26 Jan, 09:04
10 Jan, 15:56
06 May, 17:56
26 Feb, 19:45
24 Feb, 09:18
31 Jan, 13:55
31 Dec, 21:52
[42, 10, 1, 3].sort()
Свои развернутые объяснения присылайте @voloshchenkoal 24 Dec, 08:33
17 Dec, 10:15
22 Nov, 12:37
19 Nov, 11:53
position
09 Nov, 14:14
const retry = async (fn, { retries }) => {
try {
return await fn();
} catch (e) {
if (retries > 0) {
return retry(fn, { retries: retries - 1 });
}
throw e;
}
};
Лаконичное решение, мне очень нравится. Но оно не совсем подходит для прода. Автор описал свои мысли почему:timeoutMs
в configfn
, возможно, не надо ретраитьretryWhen
колбэк параметромasync function retry(callback, options = { retries: 0 }) {
let { retries } = options;
while (retries > 0) {
try {
return await callback();
} catch (e) {
retries--;
}
}
return await callback();
}
> Ход мысли тут достаточно прямолинейный, нам просто нужно отлавливать ошибку и заново запускать скрипт, пока не истекут попытки. Чтобы в конце вывести ошибку, я делаю повтором меньше на 1, а в конце просто отдаю callback.const retry = (func, { retries = 3 }) => {
const promises = Array.from({length: retries}, () => func());
return Promise.any(promises);
}
Размышление автора про минусы в своем подходе:retries
(200 к примеру), то есть вероятность упасть в ошибку самого браузера по количеству запросов. 26 Oct, 10:08
retry
, которая принимает два параметра: асинхронную функцию, которую будет вызывать и число попыток. const getUserInfo = async () => {
const response = await fetch('/api/for/user');
const userInfo = await response.json();
return userInfo;
}
retry(getUserInfo, { retries: 3 });
Свои развернутые ответы присылайте @voloshchenkoal 18 Oct, 11:15
06 Oct, 06:41
29 Sep, 14:14
15 Sep, 09:22
getWithPath
, которая принимает object
и строку path
, а возвращает значение поля с object
. Пример кода:const cat = { body: { paws: [{ type: 'top right' }]}};Свои варианты решения присылайте @voloshchenkoal, он обещает почти всем ответить и до конца недели сделать разбор.
const propertyPath = 'body.paws[0].type';
getWithPath(cat, propertyPath);
// 'top right'
10 Aug, 14:35