Voici juste une demande régulière qui ressemble à ça:
this.people = http.get('http://localhost:3000/users')
.map(response => response.json());
}
Y at-il un moyen de retarder/expirer cela?
Vous pouvez utiliser l'opérateur timeout
d'observables, comme décrit ci-dessous:
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);
Voir cet article pour plus de détails (avec la section "Nouvelle tentative de support"):
La valeur de retour de http.get()
est observable, pas la réponse . Vous pouvez l’utiliser comme ceci:
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();
}
Voir aussi https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/timeout.md
Si vous utilisez RxJS version 6 ou supérieure, la syntaxe actuelle est la suivante:
importer {timeout} de 'rxjs/operators';
getPeople(){
return this.http.get(API_URL)
.pipe(
timeout(5000) //5 seconds
);