Мне трудно реализовать прогрессивную загрузку данных с помощью новейшего Angular HttpClient.Итак, мне нужно сделать http-запрос на экспресс-сервер узла, и сервер должен начать отправку объектов JSON обратно клиенту, когда они станут доступны.До сих пор у меня есть экспресс-сервер node.js, отправляющий обратно объекты, подобные этому
response.chunkedEncoding = true;
response.contentType('application/json');
response.write(JSON.stringify({ title: 'My JSON object 1'}));
...
response.write(JSON.stringify({ title: 'My JSON object 2'}));
в конце сеанса
response.end();
Кажется, все работает нормально, как я мог видетьпрогресс загрузки в chrome, если я нажму URL-адрес сервера.
Теперь в Angular клиенте максимум, что я могу получить, это число байтов, полученных каждым из ответов сервера.как это:
map {type: 0}
subscribe undefined
map HttpHeaderResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://myapiaddress", ok: true, …}
subscribe undefined
map {type: 3, loaded: 139}
map {type: 3, loaded: 140}
, а затем после response.end ();называется Я получаю ошибку синтаксического анализатора JSON.Ошибка парсера JSON понятна.Это потому, что два объекта JSON не создают массив самостоятельно.Поэтому, когда HttpClient пытается объединить все в конечном результате, он не может проанализировать результат.Но я не хочу конечного результата.Мне нужен объект JSON на стороне клиента, когда они станут доступны.Если я укажу в «наблюдаю» что-то еще, кроме «событий» (например, «ответ» или «тело»), я вообще не получу никакого прогресса.
Как правильно обращаться с таким сценарием?Как я могу получить доступ к телу ответа во время событий прогресса?