Как создать собственный планировщик? - PullRequest
4 голосов
/ 06 мая 2019

Если вы работали с Планировщиками , вы, вероятно, знаете, что вы можете использовать разные уже предопределенные планировщики, такие как очередь, асинхронная или как можно скорее :

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

, и это еще не всеили менее ясно.

Но что, если вы хотите создать свой собственный планировщик , например: сделать задержку 5 с?

Я не смог найти никаких примеров / документовоб этом, кроме этого устаревшего SO ответа - https://stackoverflow.com/a/30921043/274500

1 Ответ

0 голосов
/ 10 мая 2019

Самым простым решением, которое я нашел, было расширение 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...