http - Angular 2 - Avbryta en prenumeration efter en timeout


Jag vill ignorera ett svar från mitt API om det tar för lång tid. Jag använder

this.http.get(mysqlUrl).subscribe()

för att få svaret. Men jag vill avbryta den prenumerationen om det tar längre än 5 sekunder att slutföra. Jag vet att jag kan använda unsubscribe(), men hur kan jag koppla det till ett timeout-värde?

Tack!

Svar #1

En enkel setTimeout bör fungera:

let subscription = this.http.get(mysqlUrl).subscribe(...);

setTimeout(() => subscription.unsubscribe(), 5000);

Svar #2

Du kan använda operatören takeUntil:

this.http.get(mysqlUrl)
    .takeUntil(Observable.of(true).delay(5000))
    .subscribe(...)