我正在尝试对Http请求返回的对象进行简单的迭代,但是不能。我已经尝试过map,现在尝试一个简单的for循环,并且遇到输入问题。这是代码:
this.apiService.getTracsStartEvents( data, options ).subscribe((events) => {
/**
* Now return a list of Mission Start geoJSON objects to plot
*/
let startMissionObjects = [];
for ( const missionStart of **events** ){
startMissionObjects.push( this.posUpdateRecToGeoJsonRec( missionStart ));
}
});
事件是问题之子,它不会让我重复。这是http呼叫:
public getTracsStartEvents( data, options ) {
return this.httpClient.post<any[]>(url, data, options );
从日志记录中我知道http调用返回一个对象数组,这是日志:
events=
(3)[{…}, {…}, {…}]
0: {imei: "300434030116030", messagecode: 10, messagecodelabel: "Start Track", alt: 575, lat: 37.734695, …}
1: {imei: "300434030230110", messagecode: 10, messagecodelabel: "Start Track", alt: 374.86835845248, lat: 33.82410407066345, …}
2: {imei: "300434063742260", messagecode: 10, messagecodelabel: "Start Track", alt: 120.92451174360001, lat: 36.97652578353882, …}
length: 3
__proto__: Array(0)
我什至尝试键入该帖子以返回它实际返回的对象的数组。但是没有什么可以让我迭代结果。我知道我一定在做些愚蠢的事。...
答案 0 :(得分:0)
在评论中讨论之后,我认为正在发生的事情是,您正在使用包含{observe: 'events'}
的选项来调用该方法。这意味着您将获得所有事件流,并会为每个操作和呼叫进度获得事件。检查documentation for HttpEvent。
HttpClient post方法的返回类型由您在post调用中指定的选项确定。您需要做的是在选项{observe: 'body', responseType:
json }
中指定,以仅获取主体中的数组。
const options = {observe: 'body', responseType: 'json'};
this.apiService.getTracsStartEvents( data, options ).subscribe((events) => {
/**
* Now return a list of Mission Start geoJSON objects to plot
*/
let startMissionObjects = [];
events.forEach((missionStart) => {
startMissionObjects.push( this.posUpdateRecToGeoJsonRec( missionStart ));
});
});