Войти Регистрация
Фронтенд

4. allSettled для категорий кешбэка Альфы

Лёгкая

Экран кешбэка Альфа-Банка собирает категории от трёх партнёрских сервисов. Если один не ответил, остальные категории всё равно показываем.

Напишите promiseAllSettled(items) без встроенного Promise.allSettled. Результат — массив в порядке входа: {status: 'fulfilled', value} или {status: 'rejected', reason}. Элементы — промисы или обычные значения.

В работе: Экран из независимых блоков, пакетная отправка, проверка нескольких зеркал API.

Пример 1: успех и отказ

Аргументы теста
[[200, "АЗС 5%", true], [100, "партнёр недоступен", false], [50, "Кафе 10%", true]]
Ожидается
{"at": 200, "ok": true, "value": [["ok", "АЗС 5%"], ["rejected", "партнёр недоступен"], ["ok", "Кафе 10%"]]}

Пример 2: все отказы

Аргументы теста
[[30, "a", false], [10, "b", false]]
Ожидается
{"at": 30, "ok": true, "value": [["rejected", "a"], ["rejected", "b"]]}
Как проверяем Объявите promiseAllSettled — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 5: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function promiseAllSettled(items) // → Promise<Array<{status, value?, reason?}>>
промисы

Источник: на задачах Альфа-Банка: категории кешбэка. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.