http - 如何使用 observable .map 和 .subscribe 处理我的数据

标签 http angular reactive-programming rxjs

我正在从我的 API 中检索一些数据:

[
 {
   "id": 1,
   "lat": 50.607084,
   "lng": 3.043099
 },
 {
   "id": 2,
   "lat": 50.607084,
   "lng": 3.043099   
 },
]

我只想使用响应式编程处理数据,以便在我的请求中创建谷歌地图标记。

  this.http.get('http://api/getData')
        .map(res => {
          return res.json()
        })
        .subscribe(
          data => {
            console.log(data);
   });

在执行此操作时,我得到了很多对象,我无法找到一种方法来记录或仅隔离纬度(我得到“未知”)。

我希望能够在“.map”(可观察的?)中放置一个函数,它将获取所有变量, 并创建我将放入数组中的 markersOptions。

let markerOptions: GoogleMapsMarkerOptions = {
            position: latlng,
            title: 'id'
};

从我在谷歌上看到的情况来看,大多数人更喜欢将对象放在一个私有(private)变量中,我假设在另一个函数中处理它。

最佳答案

您需要做的是将从服务器检索到的数组映射到 GoogleMapsMarkerOptions 列表。所以,(我不知道 GoogleMapsMarkerOptions 的构造函数)是这样的:

this.http.get('http://api/getData')
    .map(res => {
      return res.json().map(x => {
         return new GoogleMapsMarkerOptions({
             title: x.it,
             position: new GoogleMapsLatLng(x.lat, x.lng)
         });
      });

    })
    .subscribe(
      data => {
        console.log(data);
});

第二个映射是标准的 javascript 方法(不是 rxjs)。如果您需要支持旧浏览器,您可以使用 lodash 或下划线。

关于http - 如何使用 observable .map 和 .subscribe 处理我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40111330/

相关文章:

java - 获取 Observable 的最新值并立即发出

java - 如何调用将附加内容加载到对象中并将其转换为另一个可观察对象的可观察对象?

javascript - 使用客户端请求中以 JSON 格式传递的登录信息

node.js - Express http 2 服务器推送

php - $_POST 变量在 php 中为空

html - Angular 应用程序css样式中的ui-element-id

angular - 如何使用 Bootstrap 4 验证伪类 ( :valid, :invalid) with Angular 5 custom validations?

http - Rust 中基于 SSH 的 TCP 隧道

css - Ionic 3 - 改变模态背景的不透明度?

reactive-programming - 使用 RxJava 实现类似十字转门的运算符