Switchmap在同一个功能上

时间:2017-10-11 19:33:11

标签: rxjs angular2-services angular2-observables

我不是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方法,除非我从第一个返回

    private saveProducts(products: IProduct[], type: 
Type): Observable<any> {
        console.log(type);
    }

1 个答案:

答案 0 :(得分:0)

感谢所有看过它的人..  这个问题的答案是返回一个空的observable,如果没有什么可以保存的话。

  if (products$.length === 0) {
        return Observable.of([]);
    }

谢谢你们......快乐的编码......