使用Observable在Angular 2中进行轮询请求

kos*_*sta 9 json observable rxjs angular

我有以下代码在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());*/
        }
Run Code Online (Sandbox Code Playgroud)

TypeScript给我一个错误,以JSON格式制作响应(检查代码中的注释.

TypeError: res.json is not a function
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它工作了一段时间,我不确定我是否改变了其他任何东西,但它停止了工作.

代码中的注释部分非常有效.

Mar*_*cok 12

尝试

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


max*_*sam 5

这可能为时已晚,但它可能仍然有助于某人.

根据文件

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

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

我会尝试

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