以上操作符在以下包中可用
rx.all.js
rx.all.compat.js
rx.binding.js
(需要 rx.js
或 rx.compat.js
)
rx.lite.js
rx.lite.compat.js
RxJS 还具有一个 multicast
操作符,它对一个普通的 Observable 进行操作,通过您指定的特定 Subject 对该 Observable 进行多播,将转换函数应用于每次发出,然后将这些转换后的值作为其自身的普通 Observable 序列发出。对这个新 Observable 的每次订阅都将触发对基础多播 Observable 的新订阅。
示例代码
var subject = new Rx.Subject();
var source = Rx.Observable.range(0, 3)
.multicast(subject);
var observer = Rx.Observer.create(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }
);
var subscription = source.subscribe(observer);
subject.subscribe(observer);
var connected = source.connect();
subscription.dispose();
Next: 0
Next: 0
Next: 1
Next: 1
Next: 2
Next: 2
Completed
multicast
操作符在以下包中可用
rx.all.js
rx.all.compat.js
rx.binding.js
(需要 rx.lite.js
或 rx.compat.js
)
rx.lite.js
rx.lite.compat.js
还有一个 let
操作符(别名 letBind
可用于 IE9 之前的 Internet Explorer 等浏览器,其中“let
”是被禁止的)。它类似于 multicast
,但不会通过 Subject 对基础 Observable 进行多播
示例代码
var obs = Rx.Observable.range(1, 3);
var source = obs.let(function (o) { return o.concat(o); });
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });
Next: 1
Next: 2
Next: 3
Next: 1
Next: 2
Next: 3
Completed
let
(或 letBind
)操作符在以下包中可用
rx.all.js
rx.all.compat.js
rx.experimental.js
它需要以下包之一
rx.js
rx.compat.js
rx.lite.js
rx.lite.compat.js