forkJoin
может не подходить для вашего случая использования, поскольку он испускает последнее излученное значение из каждого, когда все наблюдаемые ЗАВЕРШЕНЫ.
zip
также может не дать вамжелаемое поведение, потому что Он ждет, пока все входные потоки не выпустили свое n-ое значение, и как только это условие выполнено, он объединяет все эти n-е значения и выдает n-ое объединенное значение.
, поэтому в любом случае вы не получите излучение, пока в обеих наблюдаемых не будет излучения.поскольку this.service1.source1
и this.service1.source2
являются BehaviorSubject с использованием zip
гарантирует начальную эмиссию.но более поздние выбросы будут происходить только тогда, когда будут излучаться обе наблюдаемые.
Я предлагаю использовать integraLatest beacuse всякий раз, когда какой-либо входной поток выдает значение, он объединяет последние значения, испускаемые каждым входным потоком..
combineLatest(this.service1.source1, this.service1.source2).subscribe(results => {
console.log('combineLatest results:', results);
});
и, поскольку this.service1.source1
и this.service1.source2
являются BehaviorSubject такими, что:
Вариант субъекта, который требует начальногозначение и выдает свое текущее значение всякий раз, когда он подписан.
гарантируется, что вы получаете испускание, когда вы подписываетесь на него и всякий раз, когда какой-либо из наблюдаемых генерирует значение.