javascript - Hvordan kan jeg køre forsinket logik med rxjs efter at have modtaget en værdi fra et abonnement?
jeg vil køre en del af min logik efter mit abonnement med en ekstra forsinkelse (med RxJS). Jeg kender til finalize-operatoren, som jeg kunne bruge med en pipe, men det ville føre til en øjeblikkelig udførelse efter afslutningen af mit observable.
Er der en måde at skabe en forsinkelse, før man kører finalize?
Yderligere information:
Jeg abonnerer på et serveropkald, hvilket betyder, at jeg kun forventer én værdi.
Svar #1
Nej, der er ingen måde at skabe en forsinkelse før finalize.
Du kan abonnere på en timer i finalize.
Dette er ikke et anti-mønster og er en sikker operation. finalize bliver kun kaldt én gang, efter at den oprindelige observable er blevet udsendt og fuldført.
Se på dette eksempel:
of([1,2,3])
.pipe(
finalize(() => {
timer(1000).subscribe(() => {/* 1s delayed execution */})
})
)
.subscribe(value => {
console.log(value);
})
Svar #2
Brug bare forsinkelsesoperatoren inden for en pipe. Observable.pipe(deplay(200))...
Ressourcer: https://rxjs-dev.firebaseapp.com/api/operators/delay
