Я перебираю массив объектов, полученный от службы с помощью «NgFor».
Сначала я обновил переменную массива объектов внутри метода подписки и понял две вещи.
this._myService.sendRequest(input).subscribe((value: SomethingInterface[]) => {
this.objectArray = value.map((v) => new Something(v))
});
Во-первых: (преимущество) если я делаю новый запрос, старое значение сохраняется до тех пор, пока я не получу новое значение.
Во-вторых: (недостаток) если я делаю несколько запросов, они помещаются в очередь, и каждый запрос использует ненужную полосу пропускания.
Затем я перешел на асинхронный канал и понял еще две вещи.
this.objectArrayObservable = this._myService.sendRequest(value: SomethingInterface[]).pipe(
map((value) => value.map((v) => new ChartDisplayDOM(v)))
);
Во-первых: (преимущество) Если я делаю несколько запросов, старые отменяются, и выполняется только последний запрос.
Второе: (недостаток) При ожидании завершения запроса массив пуст... и я не хочу делать полосу загрузки.
Есть ли способ воспользоваться обоими преимуществами?
Если я делаю новый запрос, старое значение сохраняется до тех пор, пока я не получу новое значение.
Если я делаю несколько запросов, старые отменяются, и выполняется только последний запрос.
Я попробовал некоторые комбинации операторов, такие как «combineLatest», с двумя разными Observables, но я не понял, как это решить.