javascript - 在 Observables 中操作数据的模式是什么(Angular2)

标签 javascript typescript angular rxjs

假设我们有这项服务

@Injectable()
export class CarService {  

    constructor (private http: Http) {}

    getCars() { 
        return this.http.get('someurl')
                .map(res => <Car[]> res.json())               
                .catch(this.handleError);  
    }   
}

我们在另一个组件中订阅了这个。如果汽车看起来像这样:

class Car{
   Color:string;
   Timestamp:any; //this comes as a string in JSON but I want it to be of type Date object
}

我们想要一些逻辑,即将 date:string 更改为日期类型,应该在哪里完成?

在服务中?如何? 在类(class)本身? .map() 会命中 Car 类的构造函数吗?

最佳答案

我会将这个过程放在:

  • 在利用数组的 map 方法的 map 运算符中

    return this.http.get('someurl')
            .map(res => <Car[]> res.json())
            .map(data => {
              data.map((d) => {
                var date = (...)
                return new Car(color, date);
              });
              return data;
            })
            .catch(this.handleError);  
    
  • Car 类的构造函数中

    return this.http.get('someurl')
            .map(res => <Car[]> res.json())
            .map(data => {
              data.map((d) => {
                return new Car(color, timestampAsString);
              });
              return data;
            })
            .catch(this.handleError);  
    

关于javascript - 在 Observables 中操作数据的模式是什么(Angular2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36184813/

相关文章:

javascript - AJAX使用GET方法加载php文件,加载时但某些jquery插件没有出现

reactjs - 尝试将 React Apollo Query 组件用于带有 typescript 的 GraphQL 查询导致错误

javascript - 如何在另一个声明文件中引用 lib.dom.d.ts 中的类型?

javascript - Webkit 与 Firefox 中的正则表达式不同

javascript - 为什么 JavaScript 为 "logical AND"操作返回空字符串?

Angular 2.1.2/2.2.0 依赖注入(inject)实例未定义

javascript - 将 NodeJS 后端代码添加到基于 Angular 种子的项目

angular - 访问被 CORS 策略 : Response to preflight request doesn't pass access control check 阻止

angular - EventEmitter 的正确用法是什么?

javascript - vue momentjs 实时更新相对时间