使用 RxJS 在 Angular 4.x 中,我看到有两种非常不同的模式可以从用户发起的操作流中生成 Observables。一个流是直接由用户点击“添加项目”按钮生成新对象的结果。另一个是由我正在使用的某些第三方代码发出的一系列事件。
我希望能够使用类似“combineLatest”的方法将这两个流组合起来生成单个的 Observable。
对于我的按钮,我遵循了以下模式:
const signal = Observable.create(
(observer) => {
this.additem= (item) => observer.next(item);
}
);
this.item$ = signal.map((item) => [item])
.scan((accumulator, value) => {
return accumulator.concat(value);
});
然而,我看到很多信息说我应该使用Subjects - 我正在尝试在我的事件回调中使用它,如下所示:
sort$ = new Subject();
sortChange(sort){
sort$.next(sort);
}
然后我尝试像这样将它们组合起来:
combine$ = Observable.combineLatest(sort$, item$,
(sort, items) => {
return "something that does stuff with these";}
);
我的问题是 - 生成“手动”流的首选模式是什么?可不可以/应该将Observables和Subjects混合在一起成为一个单一的Observable,就像我在这里尝试做的那样?
this.item
到底在做什么?你是如何调用那个函数的?从我所看到的,你可能正在尝试将你在按钮点击时创建的项目传递给可观察对象? - Samarth Saxena