如何创建自己的调度程序?

时间:2019-05-06 14:56:16

标签: rxjs rxjs-scheduler

如果您使用了 Schedulers ,您可能知道您可以使用其他已经预定义的调度程序,例如 queue,async或asap

of('', queueScheduler)
of('', asyncScheduler)
of('', asapScheduler)

这差不多是清楚的。

但是,如果您想创建自己的调度程序,例如:延迟5秒怎么办?

除了这个过时的答案-https://stackoverflow.com/a/30921043/274500

,我找不到关于它的任何示例/说明。

1 个答案:

答案 0 :(得分:0)

我发现最简单的解决方案是扩展AsyncScheduler:

class MyScheduler extends AsyncScheduler {
  public schedule<T>(
    work: (this: SchedulerAction<T>, state?: T) => void,
    delay: number = 0,
    state?: T
  ): Subscription {
    return super.schedule(work, delay + 5000, state);
  }
}

const myScheduler = new MyScheduler(AsyncAction);
console.time('myScheduler');
of(1).pipe(observeOn(myScheduler)).subscribe(v => console.timeEnd('myScheduler'));

沙盒-https://stackblitz.com/edit/rxjs-my-scheduler?file=index.ts