ich einen Endpunkt /user/?is_active=1
haben, die mir Folowing Antwort gibtPoll auf einem Endpunkt und erstellen eine beobachtbare des Ergebnisses
{ count: 123,
next: "next_page_url",
previous: null,
results: [
{id: 323, name: "test"},
{id: 324, name: "test2"},
{id: 336, name: "test3"},
{id: 328, name: "test4"},
]
}
Mein Ziel Anzahl der aktiven Nutzer zu zeigen, und aktualisieren Sie die Daten alle 60 Sekunden durch Abfragen auf dem Endpunkt (kein Sockel ... für jetzt). Ich habe eine Komponente TestComponent
, die einen Service UserService
verwendet.
@Component {
selector: 'test',
pipes: [Async],
template: `<div>{{totalActiveUsers}}</div>`,
}
export class TestComponent {
public totalActiveUsers;
constructor(userService: UserService) {
userService.activeUser.subscribe(data => {
this.totalActiveUsers = data.count;
})
}
}
UserService
sieht aus wie dieses
import {Http} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import {Users} from './user';
@Injectable()
export class UserService {
public acitveUser: Observable<Users> = new Observable()
constructor(private _http: Http) {
}
getActiveUser() {
return this._http.get('/user/?is_active=1').map(res => res.json())
}
...
//incomplete
}
ich die enpoint alle 60 sec und UserService.activeUser
zu sein ein observable
abfragen wollen, die ich zeichnen kann, was mir die Antwort gibt jedes Mal wenn ich haben neue Liste von aktive Benutzer.
'debounce' auch verwendet wird, kann ich andere erraten als' interval'. habe ich recht? – micronyks
Danke @thierry, das funktioniert. Aber dieser Code macht den ersten Anruf nach 1 min. Gibt es eine Möglichkeit, es einmal auszuführen und dann weiter zu pollen? –