Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs 同一函数上的开关映射_Rxjs_Angular2 Services_Angular2 Observables - Fatal编程技术网

Rxjs 同一函数上的开关映射

Rxjs 同一函数上的开关映射,rxjs,angular2-services,angular2-observables,Rxjs,Angular2 Services,Angular2 Observables,我不是rxjs专家 我有一个方法,它实际上做了一个保存 this.saveProducts(this.boxes, 'BOXES') 但是还有两种不同类型的项目需要使用相同的方法进行保存,只是参数不同 this.saveProducts(this.containers, 'CONTAINER') 在我的组件中,几乎没有其他独立的保存正在发生,所有这些都应该一个接一个地发生 所以我的方法是这样的 return this.service.edit(materials) .d

我不是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方法得到返回,否则它永远不会调用第二个saveProducts方法

    private saveProducts(products: IProduct[], type: 
Type): Observable<any> {
        console.log(type);
    }
private saveProducts(产品:ipproduct[],类型:
类型):可观察{
console.log(类型);
}

感谢所有看过它的人。。
这个问题的答案是,如果没有要保存的内容,则返回一个空的可观察对象

  if (products$.length === 0) {
        return Observable.of([]);
    }
谢谢各位。。快乐编码