BACK
ПрактикаReal-life: expand() cursor pagination
ПРАКТИКА · 51 · 練

Real-life: expand() cursor pagination

Через expand загрузите страницы 1 -> 2 и разверните items в поток.

  1. Решите задачу в редакторе без длинной теории.
  2. Запустите проверку и сравните вывод с ожидаемым.
  3. Если застряли, откройте решение и перенесите подход в свой код.
Решение spoiler · click to reveal
const { of, EMPTY, from, expand, mergeMap, map } = Rx;

const pages = {
  1: { items: ['a'], next: 2 },
  2: { items: ['b'], next: null },
};

const result$ = of(1).pipe(
  expand(page => pages[page].next ? of(pages[page].next) : EMPTY),
  mergeMap(page => from(pages[page].items))
);

result$.subscribe(value => console.log(value));
script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...