Javascript 如何定义RX主题上的操作员?

Javascript 如何定义RX主题上的操作员?,javascript,rxjs,Javascript,Rxjs,如何定义RX主题上的操作员?我希望能够在不更改原始源流的情况下对数据流进行节流/取数/去盎司。我尝试了以下(坏的)实现。谢谢你的帮助 var source = Rx.Observable.interval(1000).take(10); var subject = new Rx.Subject(); source.subscribe(subject); var subscriber1 = subject.subscribe( function (x) { $("#result1").

如何定义RX主题上的操作员?我希望能够在不更改原始源流的情况下对数据流进行节流/取数/去盎司。我尝试了以下(坏的)实现。谢谢你的帮助

var source = Rx.Observable.interval(1000).take(10);

var subject = new Rx.Subject();
source.subscribe(subject);

var subscriber1 = subject.subscribe(
    function (x) { $("#result1").append('next: ' + x + '<br>'); },
    function (e) { $("#result1").append('onError: ' + e.message); },
    function () { $("#result1").append('onCompleted'); });

var modified = new Rx.Subject().take(2); // ... or throttle, or debounce etc

source.subscribe(modified);

var subscriber2 = modified.subscribe(
    function (x) { $("#result2").append('next: ' + x + '<br>'); },
    function (e) { $("#result2").append('onError: ' + e.message); },
    function () { $("#result2").append('onCompleted'); });
var-source=Rx.Observable.interval(1000)take(10);
var subject=新的Rx.subject();
来源:订阅(主题);
var subscriber1=subject.subscribe(
函数(x){$(“#result1”).append('next:'+x+'
');}, 函数(e){$(“#result1”).append('onError:'+e.message);}, 函数(){$(“#result1”).append('onCompleted');}); var modified=新的Rx.Subject().take(2);/。。。或者节流,或者去盎司等等 来源:订阅(修改); var subscriber2=modified.subscribe( 函数(x){$(“#result2”).append('next:'+x+'
');}, 函数(e){$(“#result2”).append('onError:'+e.message);}, 函数(){$(“#result2”).append('onCompleted');});
您可以查看一些关于主题的额外信息

主体是可观察的,因此可以使用作用于可观察对象的相同操作符。主题是观察者,因此您可以将其订阅到源

您代码中的错误是以下
var modified=new Rx.Subject().take(2);来源:订阅(修改)

modified
不再是主题,它只是一个常规的可观察对象,所以您不能将其订阅到源,您只能将观察者订阅到源

所以你可以这样做:

var newS = new Rx.Subject();
source.subscribe(newS);

var subscriber2 = newS.take(2).subscribe(
    function (x) { $("#result2").append('next: ' + x + '<br>'); },
    function (e) { $("#result2").append('onError: ' + e.message); },
    function () { $("#result2").append('onCompleted'); });
var newS=new Rx.Subject();
来源:订阅(新闻);
var subscriber2=newS.take(2.subscribe)(
函数(x){$(“#result2”).append('next:'+x+'
');}, 函数(e){$(“#result2”).append('onError:'+e.message);}, 函数(){$(“#result2”).append('onCompleted');});