【问题标题】:Making polling request in Angular 2 using Observable使用 Observable 在 Angular 2 中发出轮询请求
【发布时间】:2016-06-06 04:27:39
【问题描述】:

我有以下代码在 AngularJS 2 中发出轮询 GET 请求:

 makeHtpGetRequest(){
            let url ="http://bento/supervisor/info";
            return Observable.interval(2000)
                .map(res => res.json()) //Error here
                .switchMap(() => this.http.get(url));

            /*
    This portion works well
    return this.http.get(url)
                .map(res =>res.json());*/
        }

TypeScript 给我一个错误,以 JSON 格式做出响应(检查代码中的注释。

TypeError: res.json is not a function

令人惊讶的是,它工作了一段时间,我不确定我是否更改了其他任何内容,但它停止工作了。

代码中的注释部分效果很好。

【问题讨论】:

    标签: json angular observable rxjs


    【解决方案1】:

    试试

    return Observable.interval(2000) 
            .switchMap(() => this.http.get(url))
            .map(res:Response => res.json());
    

    【讨论】:

    • 我试过这个。它仍然给我错误。但是,无论如何它都会进行轮询。
    【解决方案2】:

    可能为时已晚,但它仍可能对某人有所帮助。

    根据doc

    这不是 Angular 自己的设计。对于 Fetch 函数返回的响应对象,Angular HTTP 客户端遵循 ES2015 规范。该规范定义了一个 json() 方法,该方法将响应正文解析为 JavaScript 对象。

    我认为json函数只存在于http的响应中

    我会试试的

    return Observable.interval(2000) 
            .switchMap(() => this.http.get(url).map(res:Response => res.json()));
    

    【讨论】:

      【解决方案3】:

      你可以做的是,不要忘记清理你的 setInveral 否则它将永远运行:

      let myObservable = new Observable(observer => {
           let count = 0;
           let interval = setInterval(() => {
                 observer.next(count++);
        },2000);
      
       //disposal function
      return() => {
         clearInterval(interval);
       }
      });
      
      
      let subscriber = myObservable.subscribe(
        val => console.log(val),
        err => console.log(err),
        _ => console.log('done')
      );
      
      subscriber.unsubscribe();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2016-05-02
        • 2017-10-11
        相关资源
        最近更新 更多