/ / Obsvable v kombinácii s setTimeout v uhlovej 4 - uhlová, typový, rxjs5, angular-http

Pozorovateľný v kombinácii s setTimeout v uhlovej 4 - uhlový, typový, rxjs5, angular-http

niekto vie, či je možné nastaviť časový limitna žiadosť http používajúcej pozorovateľné, pozrite môj kód nižšie, čo by som chcel: akonáhle sa moje údaje zmenia v mojom webovom rozhraní API (alebo backendovom serveri) chcem aktualizovať moje dáta v pohľade, potom používateľ môže vedieť, že sa niečo nové deje ... dúfam, že som dostatočne jasný ... ak nebudete " t chápete prosím opýtajte sa ... Alebo iná možnosť je: každú minútu by funkcia mohla urobiť nový hovor na server, aby zistil, či tam sú nejaké zmeny.

  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()]);

}

odpovede:

1 pre odpoveď č. 1

Môžeš použiť timer a switch operátory:

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

0 pre odpoveď č. 2

Možno s tým začnete

  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;
}