2016-05-31 6 views
1

私はAngularJS(2.0.0-beta.16)をかなり使い慣れています。私は、GETリクエストを介して、APIからデータを引き出すサービスをセットアップすることに成功しました。今、GETリクエストを実行するように設定するにはどうすればいいですか?n秒ですか?Http Observableで "Interval"などを使用する方法は?

Property 'interval' does not exist on type 'Observable'.

私は愚かな間違いを犯したりこれを行うためのより良いパターンがあります午前:私は活字コンパイルエラーを取得することを試みたがとき、あなただけのthis._http.get(...).interval(5000).map(...);を使用して可能性が言って他の記事を見てきました?

import { Injectable } from 'angular2/core'; 
import { Http, Response } from "angular2/http"; 
import { Observable } from "rxjs/Observable"; 
import * as _ from "js/lodash.js"; 

import { Foo } from "./foo"; 

@Injectable() 
export class FooService { 
    fooList: Observable<Foo[]>; 

    constructor(private _http: Http) { 
     this.fooList = this._http.get('http://localhost:9090/api/').map(    
      response => { 
       var json = response.json(); 
       if(response.ok === true) { 
        let newFooList: Foo[] = []; 
        _.forEach(json, f => { 
         newFooList.push(new Foo(f)); 
        }); 
        return newFooList; 
       } 
      throw Error("Bad status: " + response); 
     }); 
    } 
} 
+0

使用.delay(3000) – Abiodun

+0

RxJsは、それはあなたが '別途interval'のサポートをインポートする必要があるかもしれ角度2のボックスの外に行うことができますすべてのものが付属していません。詳細については、このページの[こちら](http://stackoverflow.com/questions/34548924/missing-observable-methods-rxjs-5-0-0-beta-0)をご確認ください。 – Ownaginatious

+0

'rxjs/Observable'の代わりに' rxjs/Rx ";'から 'import {Observable}をインポートしようとしましたか? – rinukkusu

答えて

1

これはおそらく唯一の(または最良の)方法ではありませんが、それは私のために働いています。唯一の問題は、最初のGETリクエストがcreate()で指定された時間だけ遅延していることです。観察可能な応答に

import { Injectable }   from "angular2/core"; 
import { Http, Response }  from "angular2/http"; 
import { Observable }   from "rxjs/Observable"; 
import { IntervalObservable } from "rxjs/observable/IntervalObservable"; 
import * as _     from "js/lodash.js"; 

import { API_URI }   from "./constants"; 
import { Foo }    from "./foo"; 

@Injectable() 
export class FooService { 

    public fooList: Observable<Foo[]>; 

    constructor(private _http: Http) { 
     this.fooList = IntervalObservable.create(2000).flatMap(
      () => { 
       return this._http.get(API_URI); 
      }).map(
      response => { 
       var json = response.json(); 
       if(response.ok === true) { 
        let newFooList: Foo[] = []; 
        _.forEach(json, f => { 
         newFooList.push(new Foo(f)); 
        }); 
        return newFooList; 
       } 
       throw Error("Bad status: " + response); 
      }); 
    } 
} 
関連する問題