Ich Abonnieren eines BehaviorSubjectroutes$
, die ein Array von RichtungenObservable Iteration vollständige Ereignis
emittiert z.B. ['left', 'top', 'left']
Dann möchte ich jedes Element dieses Arrays mit 200ms Verzögerung protokollieren, jetzt nachdem alle Elemente protokolliert wurden, möchte ich route finished
protokollieren.
Ich versuchte das komplette Ereignis ()=>{}
und finally()
Operator, aber sie beide nicht feuern, da routes$
noch am Leben ist und neue Richtungen ausgibt.
/** Stream recent directions */
this.route$.switchMap(() => {
return Observable
.interval(200)
.timeInterval()
.take(this.route$.getValue().length)
}).subscribe(
(v) => {
if (v.value === this.route$.getValue().length) return;
let i = v.value;
this.moveStep(this.route$.getValue()[i]);
}
);
Derzeit verwende ich diese Abhilfe
.subscribe(
(v) => {
if (v.value === this.route$.getValue().length) return;
let i = v.value;
this.moveStep(this.route$.getValue()[i]);
/** Check if it is the last iteration */
if(i + 1 === this.route$.getValue().length){
console.log('route finished');
this.state = PlayerState.Idle;
}
}
);
Gibt es eine native Möglichkeit, dies in beobachtbar zu erreichen?
Können Sie dies für Klarheit umschreiben? – Asti