Here is just regular request looking like that:
this.people = http.get('http://localhost:3000/users')
.map(response => response.json());
Is there any way to delay/timeout that?
You can leverage the timeout operator of observables, as described below:
return this.http.get('http://api.geonames.org/postalCodeSearchJSON',
{ search: params })
.retryWhen(error => error.delay(500))
.timeout(2000, new Error('delay exceeded')) // <------
.map(res => res.json().postalCodes);
.retryWhen(errors => errors.delayWhen(() => Observable.timer(1000))) with rxjs 5.0.2. learnrxjs.io/operators/error_handling/retrywhen.htmlHttp class. See this article for more details: restlet.com/company/blog/2016/04/18/…The return value of http.get() is an observable, not the response.
You can use it like:
getPeople() {
return http.get('http://localhost:3000/users')
.timeout(2000)
.map(response => response.json());
}
}
foo() {
this.subscription = getPeople.subscribe(data => this.people = data)
}
// to cancel manually
cancel() {
this.subscription.unsubscribe();
}
See also https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/timeout.md
timeout with no effect (meaning no delay), but when I use delay(1000) it works with the data being delayed for 1 sec. I have imported ` 'rxjs/add/operator/timeout'` but even when I put timeout(5000) I get the data immediately. Does timeout do something different than to just delay the data?getPeople.subscribe(data => this.people = data), notice the fat arrow: =>As with the new version, you must pipe to use the timeout. And to get the response you can use map inside. The complete code is as below.
import { map, timeout, catchError } from 'rxjs/operators';
const sub: any = this.httpClient.post(this.baseUrl, body)
.pipe(timeout(Config.SesamTimeout),
catchError((err: any) => {
this.handleTimeout(err);
return of(null);
}),
map((v: SesamResponse) => {
if (v) {
const a: SearchResultGroup[] = this.convertSesamResponseToApiFileItem(v);
return a;
}
}));
Here Config.SesamTimeout is the time in milliseconds.