/ / Observavable połączone z setTimeout w Angular 4 - kątowe, maszynopis, rxjs5, kątowe-http

Obserwowalne w połączeniu z setTimeout w Angular 4 - kątowe, maszynopis, rxjs5, kątowe-http

każdy wie, czy możliwe jest ustawienie limitu czasuna żądanie http za pomocą Observable, zobacz mój kod poniżej, co chciałbym: jak tylko moje dane zostaną zmienione w moim web API (lub serwerze zaplecza) Chcę odświeżyć moje dane w widoku, wtedy użytkownik może wiedzieć, że coś nowego się dzieje ... mam nadzieję, że jestem wystarczająco jasny ... jeśli nie " t rozumiem proszę pytać ... Lub inną możliwością jest: co minutę funkcja może wykonać nowe połączenie z serwerem, aby sprawdzić, czy są jakieś zmiany.

  export interface User {
name: any[];
data: any[];
}

const userURL = "http://my.apiserver.com";



@Injectable()
export class UserService {



users: Observable<User[]>
constructor (public http:Http) {
this.users = http.get(usersURL)
.retry(3)
.map(res => [res.json()]);

}

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć timer i switch operatorzy:

this.users = Observable.timer(1000)
.switch(() => http.get(usersURL).retry(3))
.map(res => [res.json()])

0 dla odpowiedzi nr 2

Może zaczniesz od tego

  private dataState = "NotInitialized";
private data = new BehaviorSubject<myObject>(null); // You can also use an empty object instead of null => to avoid null reference exceptions in your calling code


getMyObject(): Observable<MyObject> {
if (this.dataState === "NotInitialized"){
this.dataState = "Initialized";

setInterval(() => {
this.http.get("myUrl")
.map(res => res.json())
.do(res => this.data.next(res))  // Maybe you can check if object has changed
.subscribe(res => console.log(res)); // Subscribe is important! => otherwise, there is no consumption of this observable
}, 1000);

}

return this.data;
}