相同功能的开关图
Switchmap on same function
我不是 rxjs 专家。
我有一个实际保存的方法。
this.saveProducts(this.boxes, 'BOXES')
但是还有两个不同类型的物品需要用同样的方法保存,只是参数不同而已。
this.saveProducts(this.containers, 'CONTAINER')
在我的组件中,几乎没有其他独立保存发生,所有这些都应该一个接一个地发生。
所以我的方法是这样的。
return this.service.edit(materials)
.do((data) => {
this.materials= data;
})
.switchMap(() => this.customerService.addCustomer(this.id, this.customers))
.switchMap(() => this.saveProducts(this.boxes, 'BOXES'))
.switchMap(() => this.saveProducts(this.containers, 'CONTAINER'))
.switchMap(() => this.saveProducts(this.books, 'BOOKS'))
.do(() => {
.......
}
但是发生的事情是它从不调用第二个 saveProducts 方法,除非我从第一个
那里得到 return
private saveProducts(products: IProduct[], type:
Type): Observable<any> {
console.log(type);
}
感谢任何看过它的人..
这个问题的答案是 return 如果没有什么可以保存的话,一个空的可观察对象。
if (products$.length === 0) {
return Observable.of([]);
}
谢谢大家..编码愉快..
我不是 rxjs 专家。
我有一个实际保存的方法。
this.saveProducts(this.boxes, 'BOXES')
但是还有两个不同类型的物品需要用同样的方法保存,只是参数不同而已。
this.saveProducts(this.containers, 'CONTAINER')
在我的组件中,几乎没有其他独立保存发生,所有这些都应该一个接一个地发生。
所以我的方法是这样的。
return this.service.edit(materials)
.do((data) => {
this.materials= data;
})
.switchMap(() => this.customerService.addCustomer(this.id, this.customers))
.switchMap(() => this.saveProducts(this.boxes, 'BOXES'))
.switchMap(() => this.saveProducts(this.containers, 'CONTAINER'))
.switchMap(() => this.saveProducts(this.books, 'BOOKS'))
.do(() => {
.......
}
但是发生的事情是它从不调用第二个 saveProducts 方法,除非我从第一个
那里得到 return private saveProducts(products: IProduct[], type:
Type): Observable<any> {
console.log(type);
}
感谢任何看过它的人.. 这个问题的答案是 return 如果没有什么可以保存的话,一个空的可观察对象。
if (products$.length === 0) {
return Observable.of([]);
}
谢谢大家..编码愉快..