http使用rxjs获取数组请求

时间:2018-06-28 17:28:33

标签: json angular http rxjs

this.datajson对象的数组,我只是想尝试找到一种方法来解析各个对象(在这种情况下,只需打印到控制台即可) 方法getData()中的数据正确。这两种方法都以this.http.putthis.http.get

的形式返回可观察值。
this.persistanceData.setData(this.data)
              .subscribe((res: any) => { });

this.persistentDataService.getData()
              .map(res => res.json())
              .subscribe(data => data.map(item => console.log(item)))

2 个答案:

答案 0 :(得分:0)

由于您使用的是Angular 2,因此 .pipe()无效,并且导入的版本与 rxjs 6

的早期版本不同

您的getData()函数应类似于 persistentDataService 中的内容:

getData(): Observable<any> {
  let baseURL = 'http://your-url';
  return this.http.get(apiURL) 
      .map(res => { return res.json(); });
}

您当然应该在服务中导入以下内容:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

然后,您可以返回到组件并管理返回的Observable并订阅init(例如, ngOnInit ):

ngOnInit() {
    this.persistentDataService.getData()
              .subscribe(data => console.log(data)))
}

别忘了在构造函数中注入服务,实现OnInit接口并在6以下安装rxjs版本。

答案 1 :(得分:0)

在angular 2+中,我们处理两种类型的ayncs事件。它们是 Promise和Observables

Promise可以处理单个异步任务,而Observables可以处理多个事件

如果要处理多个事件,则需要使用Observables。

在您的提供商上导入可观察的内容,如下所示。

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Response } from '@angular/http';

根据任务,您可以更改rxjs运算符。

在这种情况下,我们将把响应更改为json。

getData():Observable<any> {
  return this.http.get('192.168.1.1:8081/users/user_id=1')
    .map((response:Response) =>response.json())
}

上述方法仅将响应返回为 JSON ,而无需在页面或组件中将响应更改为 json()

任何要使用Observable的查询,请使用此链接https://codecraft.tv/courses/angular/http/http-with-observables