Javascript 嵌套订阅并需要将所有值作为主体传递给API-Angular 6 RxJS
我正在开发一个表组件,表组件的数据将根据三个下拉值填充。我需要将所有三个值传递给API以获得所需的响应。我可以使用嵌套的订阅来实现它,这是一种非常糟糕的方法。但任何更改都会多次调用API。我怎样才能修好它?我发现的大多数示例仅用于获取最终订阅值,但在我的示例中,我需要这三个值。使用Javascript 嵌套订阅并需要将所有值作为主体传递给API-Angular 6 RxJS,javascript,angular,ecmascript-6,rxjs,flatmap,Javascript,Angular,Ecmascript 6,Rxjs,Flatmap,我正在开发一个表组件,表组件的数据将根据三个下拉值填充。我需要将所有三个值传递给API以获得所需的响应。我可以使用嵌套的订阅来实现它,这是一种非常糟糕的方法。但任何更改都会多次调用API。我怎样才能修好它?我发现的大多数示例仅用于获取最终订阅值,但在我的示例中,我需要这三个值。使用轻触和平面地图有什么建议吗 请给我一些建议 this._data.currentGroup.subscribe(bg => { this.bg = bg; this._d
轻触
和平面地图
有什么建议吗
请给我一些建议
this._data.currentGroup.subscribe(bg => {
this.bg = bg;
this._data.currentUnit.subscribe(bu => {
this.bu = bu;
this._data.currentFunction.subscribe(jf => {
this.jf = jf;
this.apiService.getFunctionalData(this.bg, this.bu, this.jf)
.subscribe(
(data) => {
console.log(data)
}
);
});
});
});
这就是我所做的
this._data.currentGroup.pipe(
tap(bg => this.bg = bg),
flatMap(bu => this._data.currentUnit.pipe(
tap(bu => this.bu = bu),
flatMap(jf => this._data.currentFunction.pipe(
tap(jf => this.jf = jf)
))
))
).subscribe();
这是我的数据服务的一个示例。我在表组件的构造函数中将我的dataservice
初始化为\u data
changeGroup(bg: string) {
this.changeGroupData.next(bg);
}
private changeGroupData = new BehaviorSubject<string>('');
currentChangeGroup = this.changeGroupData.asObservable();
changeGroup(bg:string){
this.changeGroupData.next(bg);
}
私有变更组数据=新行为主体(“”);
currentChangeGroup=this.changeGroupData.asObservable();
您可以使用组合这三个观测值,然后一次订阅所有观测值。一旦三个可观测值中的一个发生变化,它就会发出一个新值
combineLatest(this._data.currentGroup,
this._data.currentUnit,
this._data.currentFunction).subscribe(([bg, bu, jf]) => {
// do stuff
});
举个例子,看看我创建的这个。现在就尝试一下。这很有效。我从这里开始学习Exmaple 1:如何从subscribe变量获取值?当我使用console.log(subscribe)时,它表示它是订阅者。我添加了一个示例。那有用吗?是的,金姆。这很有帮助。谢谢。