rxjs 5用于map,catch,throw转换为6.5语法以从后端获取响应json

时间:2019-05-23 16:35:54

标签: angular rxjs

嘿,我接下来是我的角度,我和一个使用非常旧的角度的团队一起工作,并且我正在尝试升级很多东西,我以前的 rxjs 是5.4版, 现在我将其升级到6.5 map and catch and throw不再接受了,我已经阅读了一些文章,也介绍了如何转换它们,但是仍然不清楚,因为大多数文章没有解释如何通过json()获得响应。p

这是我以前的rxjs 5.4语法

import { Observable } from "rxjs/Observable";
import "rxjs/add/operator/catch";
import "rxjs/add/operator/map";
import "rxjs/add/observable/throw";

createDataParam(url, data, params) {
    return this.http
      .post(url, data, { params: params })
      .map(response => response.json())
      .catch(this.handleError);
  }

以及如何将其转换为 rsjx 最新版本语法??

import { Observable } from "rxjs";
import { map } from "rxjs/operators"

我试图.pipe(map(res => res.json()) )无效,并且抓到了

params mean is for token 

我很喜欢从大家那里得到非常简单的示例,因此我将尝试理解它,我将其创建为可重用的方法,以便可以使用任何组件

谢谢已经读过这篇文章的人,希望我能在这里得到一些建议和帮助:)

2 个答案:

答案 0 :(得分:1)

当您将新的rxjs运算符与pipe命令一起使用时,您必须记住它们返回一个可观察的对象,因此您将无法返回带有map的json对象。映射返回的是您的示例中可观察到的json对象。然后,您需要订阅它才能将数据作为json对象获取。

对于catch,如果您想在管道内使用它,则操作符现在为catchError。

createDataParam(url, data, params) {
    return this.http
      .post(url, data, { params: params })
      .pipe(
          map(response => response.json()),
          catchError(this.handleError),
       )
       .subscribe(result => result) 
  }

答案 1 :(得分:0)

如果您使用角度HttpClient,则可以简单地订阅可观察对象。转换为json会自动按角度自动进行处理

createDataParam(url, data, params) {
    return this.http
      .post(url, data, { params: params })
      .pipe(              
          catchError(this.handleError),
       )
       .subscribe(result => result) 
  }