2017-12-12 9 views
2

http-requestを送信してみます。私は角度2とrxjsライブラリを使用します。私は5秒間の要求を送る必要があります。まずインターバルオペレータによるリクエストの送信方法は?

私はオペレータをインポートし、それが続く使用:

import { Injectable } from '@angular/core'; 
import { HttpClient } from '@angular/common/http'; 
import { Observable } from 'rxjs/Observable'; 
// import { interval } from 'rxjs/observable/interval'; 
import 'rxjs/add/observable/interval'; 

@Injectable() 
export class TasksService { 
    constructor(private http: HttpClient) { }; 
    getUserTasks(userId): Observable<any> { 
    return this.http.interval(5000).get('http://127.0.0.1:8000/app_tasks/user_tasks?user_id=' + userId); 
    }; 
} 

は、第二に、私は、コンポーネントにサブスクライブ:

ngOnInit() { 
    let userId = 1; 
    this.getUserTasks(userId); 
} 

private getUserTasks(userId): void { 
    this.tasksService.getUserTasks(userId).subscribe(
    data => { 
     this.userTasks = JSON.parse(data);     
     console.log('userTasks', this.userTasks); 
    } 
) 
}; 

しかしconsoe表示次のエラーメッセージ:SRCで

ERROR /app/services/tasks.service.ts(16,21):エラーTS2339: プロパティ 'interval'が 'HttpClient'タイプに存在しません。

答えて

4

Intervalは、HttpClientではなくObservableの作成者機能です。私は、次のことをしようとするだろう:

Observable.interval(5000) 
    .switchMap(_ => this.http.get('http://127.0.0.1:8000/app_tasks/user_tasks?user_id=' + userId) 

新しい間隔が以前の要求リターン(5秒、発生しません希望)の前にヒットした場合は、前回のhttp.get結果を放棄します.switchMapを使用することにより。

関連する問題