【问题标题】:How to create own Scheduler?如何创建自己的调度器?
【发布时间】:2019-05-10 19:34:29
【问题描述】:

如果您使用过 Scheduler,您可能知道您可以使用不同的预定义调度程序,例如 queue、async 或 asap

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

这或多或少都清楚。

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

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

【问题讨论】:

    标签: rxjs


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多