13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RxJSAdvent Calendar 2015

Day 24

RxJS 4 から 5 での変更点

Posted at

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

はじめに

今日は RxJS 4 から 5 への移行 のドキュメントから抜粋して書きます。

RxJS 5

ここまで RxJS 4 (v4.0.7) を対象に書いてきました。

RxJS 4 は Reactive-Extensions/RxJS でしたが、 RxJS 5 は ReactiveX/RxJS で開発が進められています。2015-12-24 時点では 5.0.0-beta.0 です。

JavaScript から TypeScript へ

RxJS 4 が独自の module (concat) を使った JavaScript で書かれていたのに対して、RxJS 5 は ES6 module style の TypeScript で書かれています。RxJS 4 にも *.d.ts は配置されていましたが JavaScript で書かれていました。 RxJS 5 では TypeScript で書かれています。

標準的な module 構造ですし型情報のおかげで読みやすくなっています。

Observer の method 名

Observer にあった onNext / onError / onCompletednext / error / completed に変更されました。ES7 Observable の仕様に合わせたものです。おそらく onNext を明示的に呼び出すのは不格好だからでしょう。

Disposable → Subscription

DisposableSubscription になり、dispose()unsubscribe() になりました。以前から class Subscription implements Disposable のつもりだったかもしれません。subscribe との対応は unsubscribe のほうがずっと良いでしょう。

SubscriptionCompositeDisposable と同等の add() / remove() を持ちます。add された Subscriptionunsubscribe の際に合わせて unsubscribe されます。

Operator の rename や split

flatMapmergeMap という alias が追加されたほか、Operator の変更や分割や削除などが入っています。140 個近くあった operator は 90 個近くまで削減されています。一部を分割してこの数なので相当な削減です。

今回の Advent Calendar で紹介したものも、一部は削除されています。

Scheduler の rename

Scheduler の名前が JavaScript における実装に適した形に変更されています。

  • Scheduler.defaultScheduler.asap
  • Scheduler.currentThreadScheduler.queue
  • Scheduler.immediateundefined

おわりに

今日は RxJS 4 から 5 への移行を見ていきました。時期的に微妙だったので今回は 4.0.7 にしたのですが、RxJS 5 系の方がずっと簡潔ですし読みやすいと思います。

すこし後悔しています。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?