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) );
输出
如果看到输出,则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();
如果现在看到相同的值,则在被调用的订户之间共享。
输出
作者:terry,如若转载,请注明出处:https://www.web176.com/rxjs/1930.html