小编dec*_*che的帖子

返回 Observable<void> 类型的 rxjs 函数

我正在尝试将以下可观察代码从使用 Observable.create 转换为使用可管道运算符。

public getUnrecoveredGearsAfterDep(): Observable<void> {

    return Observable.create((observer) => {      

      this.vesselDetailService.getVessel().subscribe(
        (vessel: Vessel) => {          
          console.log(vessel.cfr);
          this.getAndUpdateUnrecoveredGears(vessel.cfr).subscribe(
            () => {              
              observer.next(null);
              observer.complete();
            },
            (error) => {
              observer.error(error);
            }
          );
        },
        (error) => {
          observer.error(error);          
        }
      );    

    });
  }
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下方法,但收到转换错误 cant conversion type Observable.unknown to Observable.void 任何帮助将不胜感激。

public altGetUnrecoveredGearsAfterDep(): Observable<void> {

    return this.vesselDetailService.getVessel().pipe(
      tap( (vessel: Vessel) => console.log(vessel.cfr)),
      switchMap((vessel: Vessel) => this.getAndUpdateUnrecoveredGears(vessel.cfr)),
      map((gears: GearSet[]) => of())      
    );
  }
Run Code Online (Sandbox Code Playgroud)

rxjs

6
推荐指数
1
解决办法
4810
查看次数

使用 if/else 更新 Observable 方法以使用反应式风格

我有以下方法,我想将其更新为更具反应性的风格。它包含 if/else 逻辑。我读过您应该能够分解为流,对每个流应用过滤器并将流合并回,但我不确定如何将其应用于下面的示例。

下面的示例方法传递排除标志。该方法首先调用 http 服务来获取数组。如果排除标志为 true,则我们需要调用另一个 http 服务来获取过滤数组所需的一些配置数据。

感谢您的帮助。

method A(boolean excludeSomeCatagory ) : Observable<Species[]> {
  return Observable.create((observer) => {
    getSomeHttpData().subscribe((species: Species[]) => {
      if(!excludeSomeCatagory){
        observer.next(species);
        observer.complete();                                  
      }
      else {
        getSomeConfigDataFromHttp().subscribe(
          (data) => {
          filteredArray: Species[] = applyFilter(data, species);
          observer.next(filteredArray);
          observer.complete();                                                    
        });                                          
      }                             
    });
  }
}             
Run Code Online (Sandbox Code Playgroud)

rxjs angular

1
推荐指数
1
解决办法
174
查看次数

标签 统计

rxjs ×2

angular ×1