У меня есть набор наблюдаемых, и мне нужно будет отреагировать, когда последний предоставит значение (в зависимости от того, какое из них будет).
Мой первый подход был forkJoin вот так.
const observables = [
this.backend.config(),
this.navigation.location()
];
forkJoin(observables)
.subscribe(([backend, selection]) => {
console.log(backend);
console.log(selection);
});
Это работало частично до тех пор, пока наблюдаемые издают в некоторой точке complete (после чего вызывается финализация. Затем я попытался ОбъединитьПоследний . Это решило исходная проблема, но создала новую. Теперь я получаю последний метод, вызываемый, как только любой из наблюдаемых обеспечивает.
Я бы хотел, чтобы он вызывался, когда каждая из наблюдаемых обеспечила хотя бы один раз, а может или не может быть завершена. Не имеет значения, является ли это последним значением каждого или первым. Хотя, это может быть плюсом, чтобы узнать, как это контролировать и для + 1.
Лучшее, но хакерское решение, которое я придумал, это проверить !! backend и !! navigation и действовать, только если все они удовлетворяют. Я ищу более плавное решение или подтверждение того, что то, что я использую, так же хорошо, как и получается.
combineLatest(observables)
.subscribe(([a, b, c]) => {
if (!a || !b || !c)
console.log("Oh, I'm coming...");
else
console.log("Wham, bam - I'm done!");
});
Все это из блогов вот так или , которые , публикуют сообщения на SO и Observables 'docs .