В чём отличие между операторами combineLatest и forkJoin?

forkJoin в RxJS ждёт завершения всех переданных Observable и выдаёт массив последних значений каждого из них. Если один из стримов не завершится, forkJoin не сработает.

Короткий ответ

Что ответить на собеседовании

forkJoin в RxJS ждёт завершения всех переданных Observable и выдаёт массив последних значений каждого из них. Если один из стримов не завершится, forkJoin не сработает.

Подробный разбор

Ответ с пояснениями

forkJoin в RxJS ждёт завершения всех переданных Observable и выдаёт массив последних значений каждого из них. Если один из стримов не завершится, forkJoin не сработает.

Например, если есть два стрима с разными задержками, forkJoin выдаст результат только после того, как оба стрима завершатся, и в массиве будут их последние эмитты.

Пример:

import { of, forkJoin, delay } from 'rxjs';

const stream1 = of('A').pipe(delay(1000));
const stream2 = of('B').pipe(delay(2000));

forkJoin([stream1, stream2]).subscribe(result => {
  console.log(result); // Выведет ['A', 'B'] через ~2 секунды
});

Таким образом, forkJoin полезен, когда нужно дождаться завершения нескольких асинхронных операций и получить их результаты одновременно.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку