Oleg Shchegolev
Oleg Shchegolev

Reputation: 176

How to refactor function with observable

How can I refactor this part of code? I want to reduce the amount of 'else if' statements. I tried to use || operator, but it's doesn't work.

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$;
  }

Upvotes: 0

Views: 173

Answers (1)

Pac0
Pac0

Reputation: 23129

Your code is currently functionaly equivalent to :

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

Without any if statement.

Also, this can be simplified further by static Observable creation methods :

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

Upvotes: 1

Related Questions