如何使用 RXJS Observables 轮询服务? [英] How do I poll a service using RXJS Observables?
本文介绍了如何使用 RXJS Observables 轮询服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定以下代码,如何更改它以使对api/foobar"的获取请求每 500 毫秒重复一次?
Given the following code, how to I alter it to make the get request to "api/foobar" repeat every 500 milliseconds?
import {Observable} from "RxJS/Rx";
import {Injectable} from "@angular/core";
import {Http} from "@angular/http";
@Injectable() export class ExampleService {
constructor(private http: Http) { }
getFooBars(onNext: (fooBars: FooBar[]) => void) {
this.get("api/foobar")
.map(response => <FooBar[]>reponse.json())
.subscribe(onNext,
error =>
console.log("An error occurred when requesting api/foobar.", error));
}
}
推荐答案
确保您已从 rxjs/Rx
导入 {Observable}
.如果我们不导入它,我们有时会得到 observable not found 错误.
Make sure you have imported {Observable}
from rxjs/Rx
. If we don't import it we get observable not found error sometimes.
工作 plnkr http://plnkr.co/edit/vMvnQW?p=preview
import {Component} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/Rx';
import {Observable} from 'rxjs/Rx';
@Component({
selector: 'app',
template: `
<b>Angular 2 HTTP polling every 5 sec RxJs Observables!</b>
<ul>
<li *ngFor="let doctor of doctors">{{doctor.name}}</li>
</ul>
`
})
export class MyApp {
private doctors = [];
pollingData: any;
constructor(http: Http) {
this.pollingData = Observable.interval(5000)
.switchMap(() => http.get('http://jsonplaceholder.typicode.com/users/')).map((data) => data.json())
.subscribe((data) => {
this.doctors=data;
console.log(data);// see console you get output every 5 sec
});
}
ngOnDestroy() {
this.pollingData.unsubscribe();
}
}
这篇关于如何使用 RXJS Observables 轮询服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文