слияние - это метод создания c, который сглаживает группу наблюдаемых. в соответствии с документами
Сводит несколько наблюдаемых вместе, смешивая их значения в одну наблюдаемую.
просто он возьмет группу наблюдаемых и сведет их в одну, поэтому всякий раз, когда какое-либо наблюдаемое выдает значение, выходные данные выдают значение.
mergeAll Однако отличается, это метод экземпляра, который работает с наблюдаемыми более высокого порядка (наблюдаемые, которые испускают наблюдаемые), в соответствии с документами
Преобразует Наблюдаемый высшего порядка в Наблюдаемый первого порядка, который одновременно доставляет все значения, которые испускаются во внутренних Наблюдаемых.
Я думаю, что это подводит итог, но слияние может привести к путанице, поэтому давайте рассмотрим этот пример, предоставленный rx js docs
import { fromEvent, interval } from 'rxjs';
import { take, map, mergeAll } from 'rxjs/operators';
const higherOrder = fromEvent(document, 'click').pipe(
map((ev) => interval(1000).pipe(take(10))),
);
const firstOrder = higherOrder.pipe(mergeAll(2));
firstOrder.subscribe(x => console.log(x));
у вас есть наблюдаемый щелчок документа (более высокий порядок), который возвращает наблюдаемый интервал (внутренняя наблюдаемая), который выдает значение каждую секунду, он завершится через 10 интервалов, то есть каждый раз, когда вы нажимаете на документ, новый интервал будет возвращено, здесь, где происходит слияние всех, оно подпишется на эти интервалы, возвращаемые наблюдаемой более высокого порядка, и объединяет их в одну наблюдаемую, наблюдаемую в первом порядке, аргумент 2, должен ограничиваться 2 одновременными интервалами одновременно , так что если вы нажали 3 раза, запустятся только 2, но, поскольку эти 2 интервала завершатся через 10 секунд, вы можете нажать еще раз, и mergeAll подпишется на новые интервалы.