无法遍历http发表返回数组

时间:2019-04-03 21:48:42

标签: angular typescript

我正在尝试对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)

我什至尝试键入该帖子以返回它实际返回的对象的数组。但是没有什么可以让我迭代结果。我知道我一定在做些愚蠢的事。...

1 个答案:

答案 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 ));
  });
});