如何重构这部分代码?我想减少“ 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$;
}
答案 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}`]);