LoginSignup
2
3

More than 5 years have passed since last update.

RXJS HotとColdの違い

Last updated at Posted at 2018-12-10

前提

Observableについて理解する必要があります。
https://qiita.com/ryuseikurata/private/fa5227a1203af86a19ab
https://qiita.com/ryuseikurata/private/45faa9cd8f50a390b10c

Cold

subscribeすることで初めて値が流れるようになります。

//subscribeするまでは、動きません。
const cold = new Observable(function subscribe(observer) {
  console.log('subscribed');
  observer.next(Math.random());
  observer.complete();
});
//subscribeすることで動きます。ストリームを二回稼働させている状態です。
cold.subscribe((num) => console.log('sub 1:', num));
cold.subscribe((num) => console.log('sub 2:', num));
//1回目のsubscribe
subscribed
sub 1: 0.09805969045
//2回目のsubscribe
subscribed
sub 2: 0.1231231231231

Hot

hot変換までの処理は、値が流れるようにします。
したがって、それまでのストリームの処理は一度しか行われず、その後は返り値で作られたobservableが残ります。

//publish()によって、hot変換され、動く状態になっています。
const cold = new Observable(function subscribe(observer) {
  console.log('subscribed');
  observer.next(Math.random());
  observer.complete();
});
const hot = cold.publish();
//hot変換後の返り値で作られたメッセージを流しています。
hot.subscribe((num) => console.log('sub 1:', num));
//hot変換後の返り値で作られたメッセージを流しています。
hot.subscribe((num) => console.log('sub 2:', num));
//connectで稼働します。
hot.connect(); // <-- this subscribes the inner Subject to the cold source
//connectで稼働し、subscribedがはじめにきます。
subscribed
//hot変換後のsubscribeなので、Math.randome()が返り値として残ったobservableを処理しています。
sub 1: 0.249848935489
sub 2: 0.249848935489

引用

2
3
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
2
3