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ď č. 1Môž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;
}