如果您使用调度程序,则可能知道您可以使用其他已经预定义的调度程序,例如队列,异步或尽快:

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


这或多或少是清楚的。

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

除了这个过时的SO答案-https://stackoverflow.com/a/30921043/274500,我找不到关于它的任何示例/说明。

最佳答案

我发现最简单的解决方案是扩展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

关于rxjs - 如何创建自己的调度程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56007707/

10-12 14:17