Я запустил новый проект Angular 7, в котором мне нужно вызвать API, чтобы получить список результатов.Затем, если конкретный результат находится в списке, я выбираю его, если нет, создаю его, вызывая другую конечную точку API.Все это должно быть сделано в методе ngOnInit()
.
Чтобы упростить задачу, у меня есть следующий код:
const subject = new BehaviorSubject(null);
subject.next(6);
const res$ = subject.pipe(
mergeMap(() => getValues()),
tap((res) => {
const exists = res.find(x => subject.value === x) || null;
if (exists === null) {
// TODO: call the getNew() function, but I don't want nested call
} else {
// Do nothing
}
})
);
// res$ should contains [1, 2, 3, 4, 5, 6]
res$.subscribe(x => console.log(x));
function getValues() {
// Mocking the API call
return of([1, 2, 3, 4, 5]);
}
function getNew() {
// Mocking the API call
return of(6);
}
В конце, наблюдаемое res$
должносодержит весь массив (с добавленным значением), и я хочу избежать вложенной подписки.
Большое спасибо!