如何用可观察的方式重构功能

时间:2019-10-18 09:35:36

标签: angular typescript

如何重构这部分代码?我想减少“ else if”语句的数量。我尝试使用||运算符,但这不起作用。

getNominieesByStage(stage_key: string): Observable<any> {

    const simpleObservable$ = new Observable<any>((observer) => {

      if (stage_key === 'key1') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else if (stage_key === 'key2') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else if (stage_key === 'key3') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else if (stage_key === 'key4') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else if (stage_key === 'key5') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else if (stage_key === 'key6') {
        observer.next(NOMINIEES[`${stage_key}`]);
      } else {
        observer.next([NOMINIEES[`${stage_key}`]]);
      }

      // observable execution

      observer.complete();
    });

    return simpleObservable$;
  }

1 个答案:

答案 0 :(得分:1)

您的代码目前在功能上等同于:

 const simpleObservable$ = new Observable<any>((observer) => {
   observer.next(NOMINIEES[`${stage_key}`]);
   observer.complete();
 }
 return observer;

没有任何if语句。

此外,可以通过静态的Observable创建方法进一步简化此操作:

return Rx.Observable.of(NOMINIEES[`${stage_key}`]);