HTTP-запрос, использующий Angular HTTP-клиент, на самом деле является наблюдаемым Rx JS типа HttpRequest
, который создает поток уведомлений типа HttpEvent
. Если у вас wi sh, чтобы увидеть все уведомления, используйте опцию observe: 'events'
в запросе. Если эта опция не указана (по умолчанию), возвращается только последнее уведомление (результат HTTP-запроса), как показано здесь .
From docs :
При использовании HttpClient.request()
с методом HTTP настройте метод с помощью observe: 'events'
, чтобы видеть все события, включая ход передачи.
Видя это, ваш пример of(['a', 'b', 'c'])
не похож на HTTP-запрос, поскольку он выдает только одно уведомление (массив ['a', 'b', 'c']
) и завершается. Однако from(['a', 'b', 'c'])
похож на HTTP-запрос, поскольку он генерирует каждый элемент индивидуально.
Является ли HTTP-ответ одним элементом в наблюдаемом потоке?
Да, это последний уведомление в потоке уведомлений. Это тип HttpEventType.Response
.
Рабочий пример: Stackblitz
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpEvent, HttpEventType } from '@angular/common/http';
@Component({ selector: 'app', templateUrl: 'app.component.html' })
export class AppComponent implements OnInit {
events = [];
constructor(private http: HttpClient) { }
ngOnInit() {
this.http.get<any>('https://jsonplaceholder.typicode.com/todos/1', {observe: 'events'}).subscribe((event: HttpEvent<any>) => {
this.events.push(event);
console.log(event);
});
}
}
Консольный вывод
type: 0
соответствует HttpEventType.Sent
, а type: 4
соответствует HttpEventType.Response
. Вы могли бы увидеть больше событий в более сложном запросе (например, в запросе на загрузку видео).