如果您使用调度程序,则可能知道您可以使用其他已经预定义的调度程序,例如队列,异步或尽快:
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/