Вы могли бы сделать что-то вроде этого:
forkJoin(reqs).subscribe(([phone, address]) => {
if (!shouldUpdatePhone) {
address = phone;
}
});
Но я думаю, что вы что-то наблюдаете, forkJoin
выдает массив ответов от всех внутренних наблюдаемых, как только они все завершены.Таким образом, он будет выдавать только один раз, содержащий оба ответа (если они оба были добавлены в массив)
другой вариант - добавить канал в forkJoin и внутренние подпрограммы (непроверенный код):
const reqs = [];
if (shouldUpdatePhone) {
reqs.push(this.customerService.updatePhone(phoneUpdateRequest)).pipe(
map((response) => ({ phone: response }))
);
}
if (shouldUpdateAddress) {
reqs.push(this.customerService.updateAddress(addressUpdateRequest)).pipe(
map((response) => ({ address: response }))
);
}
forkJoin(reqs).pipe(
map((responses) => reponses.reduce((a, b) => ({...a, ...b}), {}))
).subscribe(result => {
// result.address;
// result.phone;
});