Rxjs-multicasting-operator
提供:Dev Guides
RxJS-マルチキャストオペレーターマルチキャスト
マルチキャストオペレータは、作成された単一のサブスクリプションを他のサブスクライバと共有します。 マルチキャストが受け取るパラメータは、件名、またはconnect()メソッドを使用する必要があるConnectableObservableを返すファクトリメソッドです。 サブスクライブするには、connect()メソッドを呼び出す必要があります。
構文
multicast(subjectOrSubjectFactory: Subject): OperatorFunction
パラメータ
subjectOrSubjectFactory:マルチキャストに渡されるパラメータは、サブジェクトまたはサブジェクトを返すファクトリメソッドです。
multicast()オペレーターの機能に入る前に、multicast()オペレーターがどのように役立つかをまず理解しましょう。
サブスクリプションを使用した単純なオブザーバブルの次の例を検討してください-
例
import { Observable } from 'rxjs';
var observable = new Observable(function subscribe(subscriber) {
try {
subscriber.next(Math.random());
} catch (e) {
subscriber.error(e);
}
});
const subscribe_one = observable.subscribe(val => console.log(
"Value from Sub1 = "+val)
);
const subscribe_two = observable.subscribe(val => console.log(
"Value from Sub2 = "+val)
);
出力
出力が表示される場合、Sub1とSub2の値は異なります。 これは、サブスクライバーが呼び出されると、observableが再起動し、利用可能な新しい値を提供するためです。 ただし、サブスクライバーが同じ値を持つように呼び出される必要があります。
ここでは、multicast()演算子を使用してそれを支援します。
例
import { Observable,Subject } from 'rxjs';
import { take, multicast, mapTo } from 'rxjs/operators';
var observable = new Observable(function subscribe(subscriber) {
try {
subscriber.next(Math.random());
} catch (e) {
subscriber.error(e);
}
});
const multi_op = observable.pipe(multicast(() => new Subject()));
const subscribe_one = multi_op.subscribe(
x => console.log("Value from Sub1 = "+x)
);
const subscribe_two = multi_op.subscribe(
x => console.log("Value from Sub2 = "+x)
);
multi_op.connect();
これで、同じ値が呼び出されたサブスクライバー間で共有されていることがわかります。