http - 如何从 http.request() 中正确捕获异常?

标签 http typescript angular observable

我的部分代码:

import {Injectable} from 'angular2/core';
import {Http, Headers, Request, Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Injectable()
export class myClass {

  constructor(protected http: Http) {}

  public myMethod() {
    let request = new Request({
      method: "GET",
      url: "http://my_url"
    });

    return this.http.request(request)
      .map(res => res.json())
      .catch(this.handleError); // Trouble line. 
                                // Without this line code works perfectly.
  }

  public handleError(error: Response) {
    console.error(error);
    return Observable.throw(error.json().error || 'Server error');
  }

}

myMethod() 在浏览器控制台产生异常:

ORIGINAL EXCEPTION: TypeError: this.http.request(...).map(...).catch is not a function

最佳答案

也许你可以尝试在导入中添加这个:

import 'rxjs/add/operator/catch';

您还可以:

return this.http.request(request)
  .map(res => res.json())
  .subscribe(
    data => console.log(data),
    err => console.log(err),
    () => console.log('yay')
  );

根据评论:

EXCEPTION: TypeError: Observable_1.Observable.throw is not a function

同样,为此,您可以使用:

import 'rxjs/add/observable/throw';

关于http - 如何从 http.request() 中正确捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35326689/

相关文章:

angular - 同步点击后如何从BehaviorSubject获取值?

json - 如何在 Angular2 中与其动态交互的 2 个组件中注入(inject)相同的服务

typescript - `as` 类型运算符和 TypeScript 中的经典类型之间有区别吗?

Angular 单元测试 - 如何窥探可观察的属性

http - 为什么有的网站以www开头,有的以app开头

java - 从 httpmultipart 请求获取 xml 响应

javascript - FindOne 函数无法与 Postgres 一起使用

typescript - 如何期望 Jest 会引发自定义错误?

javascript - Angular2,如何防止HTTP重定向

php - Web 服务器何时清除 PHP session 标识符?