如何重复 RxJS from() 但跳过第一次发射

问题描述 投票:0回答:1

我有以下代码,我希望它应该为

scheduleEntries
数组中的每个成员发出,并且我希望跳过每个数组成员的第一次发出。我怎样才能让它工作?

现在它根本不发射

skip(1)

import { Observable, from, mergeMap, of, repeat, skip, timer } from 'rxjs';

class Schedule {
  private scheduleEntries = [
    { value: true, countdown: 48395 },
    { value: true, countdown: 38395 },
    { value: false, countdown: 42394 },
    { value: true, countdown: 4835 },
  ];

  private lockEmitter$: Observable<ScheduleEntry>;

  constructor() {
    this.lockEmitter$ = from(this.scheduleEntries).pipe(
      skip(1), // skip the first emission for each entry
      mergeMap(entry => of(entry).pipe(
        repeat({ delay: () => this.delayedObservableFactory(entry) }),
      )),
    );
    this.lockEmitter$.subscribe(console.log);
  }

  private delayedObservableFactory(entry: ScheduleEntry) {
    return new Observable(observer => {
      timer(entry.countdown).subscribe(() => observer.next({}));
    });
  }
}


interface ScheduleEntry {
  value: boolean;
  countdown: number;
}
javascript rxjs rxjs7
1个回答
0
投票

您认为需要在管道之前移动料斗吗?

© www.soinside.com 2019 - 2024. All rights reserved.