У меня есть приложение Angular 7 v7.2.10
и rxjs v6.3.3
. Я озадачен поведением, которое я наблюдаю с HTTPClient, когда я вижу, что он отслеживает выполненные запросы. Не уверен, что это ново или, как ни странно, из-за побочного эффекта моего кода. По сути, у меня есть сервис, который делает:
@Injectable()
export class AvailabilityService {
constructor(private http: HttpClient) {}
public getMonthAvailability(year: number, month: number): Promise<IMonthAvailability> {
console.log('hit');
return this.http.get<IMonthAvailability>(`${environment.apiBaseUrl}/availability/${year}/${month}`)
.toPromise()
.then(r => {
console.log('response');
return r;
})
.catch((error: Response | any) => {
return Promise.reject(error);
});
}
}
, поэтому я получаю IMonthAvailability
с учетом month
и year
. Этот ответ в настоящее время интегрирован в календарь, и все работает отлично. Данные извлекаются из .NET Core API, который я сейчас определил (хотя я не думаю, что он мне нужен, потому что это не имеет никакого значения) Cache-Control: no-cache, no-store
на всякий случай. Заголовки ответа:
Date →Wed, 03 Apr 2019 15:46:57 GMT
Content-Type →application/json; charset=utf-8
Server →Kestrel
Cache-Control →no-store, no-cache
Transfer-Encoding →chunked
Полагаю, все в порядке с настройкой. На самом деле я не видел этого раньше. Итак, что происходит, когда я перемещаю календарный месяц и перехожу к следующему месяцу, я вижу, как работает API, и данные извлекаются. Если я теперь вернусь к предыдущему месяцу, который уже загружен, обещание автоматически разрешается, и данные «как-то уже есть», и API не вызывается. У меня вопрос: из-за скорости вызова Angular отслеживает действительно быстрые вызовы / с небольшой полезной нагрузкой или это что-то совершенно независимое ... Как я уже сказал, я создал другие API и клиенты в Angular и никогда не видел этого .
Любое объяснение / совет действительно приветствуется.
ОБНОВЛЕНИЕ : я добавил следующие операторы console.log к частям метода, которые, по моему мнению, должны быть обработаны, и я вижу, что оба они регистрируются ВСЕ ВРЕМЯ.