Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@bouzuya

RxJS の Scheduler とその種類

この記事は bouzuya's RxJS Advent Calendar 2015 の 19 日目かつ RxJS Advent Calendar 2015 の 19 日目です。

はじめに

今日は Scheduler とその種類を見ていきます。内容は一覧とメモです。

RxJS 4.0.7 を対象にしています。

Scheduler

各種 Scheduler の superclass です。schedule を呼び出すことで処理を必要なら遅延させて実行します。

各種 Scheduler の instance を保持しています。通常は以下の instance を使うだけで事足りると思います。

  • Scheduler.currentThread = new CurrentThreadScheduler()
  • Scheduler.immediate = new ImmediateScheduler()
  • Scheduler.default = Scheduler.async = new DefaultScheduler()

また Source Code を読む上で SchedulerScheduler.prototype.scheduleScheduler.prototype.scheduleRecursive などを読むことになると思います。

CatchScheduler

Scheduler.prototype.catch で Scheduler で発生する Error を wrap する際に使用されています。

CurrentThreadScheduler

queue に入れつつ同期的に処理します。 RxJS 5 では queue になります。

DefaultScheduler

非同期で (setTimeout / setImmediate / nextTick など) で実行します。RxJS 5 では asap になります。

名前に反して Scheduler.default はほとんどの場合に default では使われていません。Observable.mergeObservable.just では Scheduler.immediate が、Observable.of では Scheduler.currentThread などが default として使われています。

HistorycalScheduler

指定した Date を基準に、そこからの相対時間で動作させることができます。VirtualTimeScheduler を継承しています。

ImmediateScheduler

特に timer を使わずに処理します。RxJS 5 では削除 (undefined で指定) になります。

VirtualTimeScheduler

Virtual Time を基準に動作する Scheduler の base class です。HistoricalScheduler の superclass です。ただ、使うべき場面をあまり想像できません (テスト用途?) 。

おわりに

今日は Scheduler とその種類を確認しました。

はじめは実装について書こうかと思ったのですが大変そうなので諦めました。ただ Scheduler を把握しないとほとんど Operator の処理の流れを追うことができないので一度は確認すべきだと思います。

おそらく今日までで範囲的には

  • Observable
  • Observer
  • Subject
  • Disposable
  • Scheduler
  • 基本的な Operator

をひととおり見てきたので、もう Source Code を見ても特別新しい要素は出てこないと思います。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What is going on with this article?