Уроки52. Project: последовательные запросы
Уроки · 52
52. Project: последовательные запросы
Проект 4 — последовательная загрузка
Реальный кейс: загрузить профиль пользователя, потом по этому пользователю — его заказы, потом по заказам — итог. Эти шаги зависят друг от друга, и порядок важен сильнее, чем скорость.
Особенность теста
Заметьте: второй шаг orders по времени быстрее первого user (10мс vs 50мс). Если бы вы взяли mergeMap, orders пришёл бы раньше. concatMap гарантирует строгий порядок.
Что нужно сделать
- В
loadSequentially$внутриpipeдобавьтеconcatMap(step => loadStep(step)). - Порядок результата:
user → orders → total.
Детерминированная проверка
В этой задаче проверка идет через виртуальное время TestScheduler. Если решение верное, в консоли появится только Test Passed!. Не добавляйте лишние console.log, иначе проверка провалится.
Решение spoiler · click to reveal
const { from, concatMap } = Rx;
function loadSequentially$(steps, loadStep) {
return from(steps).pipe(
concatMap(step => loadStep(step))
);
} script.ts
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...