映射http错误响应

时间:2016-02-29 15:16:05

标签: angular rxjs observable

有没有办法不仅映射成功的响应而且还映射错误?

我想在订阅功能中获得修改后的错误

request.subscribe(
    response => {
        this.user = response;
    },
    error => {
        this.error = error;
    }
);

我已经尝试过这个

let request = this.http.put(url, JSON.stringify(user))
.map(
    response => response.json(),
    error => this.handleError(error) // returns a string
);

handleError永远不会被执行。

提前致谢。

1 个答案:

答案 0 :(得分:15)

要映射错误响应的结果,您需要使用catch运算符:

let request = this.http.put(url, JSON.stringify(user)).map(
            response => response.json())
          .catch(
            error => this.handleError(error)
        );

仅在成功响应时调用map运算符中指定的回调。

如果你想" map"错误,你可以使用类似的东西:

this.http.get(...)
       .map(...)
       .catch(res => Observable.throw(res.json())

在这种情况下,映射的错误将提供给subscribe方法的第二个参数中定义的回调。