RxJS:Multicasting运算符multicast

Multicasting运算符与其他订阅者共享创建的单个订阅。组播接受的参数是返回必须具有connect()方法的ConnectableObservable的主题或工厂方法。要订阅,connect()方法必须被调用。

语法

multicast(subjectOrSubjectFactory: Subject): OperatorFunction

参数

subjectOrSubjectFactory:传递给Multicast的参数是返回主题的主题或工厂方法。

在开始使用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)
);

输出

RxJS:Multicasting运算符multicast

如果看到输出,则Sub1和Sub2的值将不同。这是因为当调用订户时,可观察值将重新启动并提供可用的新值。但是我们需要被呼叫的订户具有相同的价值。

在这里,我们有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();

如果现在看到相同的值,则在被调用的订户之间共享。

输出

RxJS:Multicasting运算符multicast

作者:terry,如若转载,请注明出处:https://www.web176.com/rxjs/1930.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2021年2月9日 下午12:35
下一篇 2021年2月9日 下午12:47

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注