У меня есть ситуация, когда я выполняю http-запрос для получения массива данных. Однако в некоторых случаях возвращаемый результат - пустой массив, и если это так, мне нужно выполнить еще один запрос get.
позвольте мне проиллюстрировать на примере кода
let name;
ngOnInit() {
this.service.getData().subscribe(response => {
let data = response;
if (data.length === 0) {
this.service.getOtherData().subscribe(otherResponse => {
data = otherResponse;
});
}
this.name = data[0].name;
});
}
Я попытался проиллюстрировать мою текущую дилемму: мне нужно свойство "name" первой записи в массиве. Однако, если результатом первого запроса является пустой массив, мне придется выполнить последующий вызов другого метода http.
Если первый запрос возвращает пустой массив, функция все равно попытается назначить свойство "name" первой записи в массиве, но так как оно не существует, я получаю невозможное чтение "name" из undefined, даже до того, как будет выполнен второй http-вызов. Если первый ответ - пустой массив, я бы хотел, чтобы остальная часть функции «ждала» при запуске, пока не получит ответ от второго http-вызова.
Каков правильный подход в этой ситуации? Я посмотрел на mergeMap / switchMap, но он не показался мне правильным выбором, поскольку мне не всегда нужно выполнять несколько запросов.
Любой совет очень важен!