在Angular 4.x中使用RxJS时,我看到了两种非常不同的模式,用于从用户启动的动作流中生成Observable。一个流是用户单击生成新对象的“添加项目”按钮的直接结果。另一个是由我正在使用的某些第三方代码发出的一系列事件。
我希望能够使用“ 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);
});
Run Code Online (Sandbox Code Playgroud)
但是,我看到很多信息说我应该改用Subjects-我正尝试将其与事件回调一起使用,如下所示:
sort$ = new Subject();
sortChange(sort){
sort$.next(sort);
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试将这些合并如下:
combine$ = Observable.combineLatest(sort$, item$,
(sort, items) => {
return "something that does stuff with these";}
);
Run Code Online (Sandbox Code Playgroud)
我的问题是-“手动”生成流的首选模式是什么?是否可以/应该像我在这里尝试的那样将可观察对象和主题网格化为一个可观察对象?