Самый простой способ может быть
merge(callOne$, callTwo$)
.subscribe(data => {
console.log(data); // this fires twice but results are not guaranteed to be ordered
foo = data;
});
. Вы можете сохранить заказ, но при этом будет отправлено одно событие с чем-то вроде этого
forkJoin(callOne$, callTwo$)
.subscribe(([data1, data2]) => { // this fires once with both results ordered
console.log(data1);
console.log(data2);
foo = data;
});
Если вы хотите, чтобы 2 отдельных уведомления поддерживались порядок, то есть сначала результат callOne $, а затем результат callTwo $, вы можете попытаться использовать оператор expand
, например, такой:
callOne$.pipe(
expand(val => callTwo$),
take(2) // to make sure you do not call callTwo$ infinitely
)
.subscribe(data => {
console.log(data); // this fires twice and the results are guaranteed to be ordered
foo = data;
});
Рассматривая тот факт, что foo
является массивом , вы можете быть склонны к использованию forkJoin
, то есть второго варианта.
Более подробное объяснение вы можете найти в этой статье .