Как упростить операторную функцию rx js - PullRequest
0 голосов
/ 30 марта 2020

Как мы можем упростить указанную ниже функцию, в основном я хочу избавиться от вложенных операций с картами.

  static getEmployees(data: Observable<any>): Observable<Employee[]> {
   return data.pipe(map(data=>{
        return data.map(item=>{
          return  {
            id: item.id,
            first_name: item.first_name,
            last_name: item.last_name,
            age:item.age,
            is_active:item.is_active
          }
        })
    })) as Observable<Employee[]>;
  }

1 Ответ

0 голосов
/ 31 марта 2020

from () преобразует входящий массив в поток отдельных элементов, которые обрабатываются оператором map () и преобразуются обратно в массив с помощью toArray () после завершения потока.

С точки зрения читабельности, вы можете поспорить, действительно ли это упрощение. Надеюсь, это поможет.

    static getEmployees(data: Observable<any>): Observable<Employee[]> {
        return data.pipe(
            switchMap(x => from(x)),
            map(item => ({
                id: item.id,
                first_name: item.first_name,
                last_name: item.last_name,
                age: item.age,
                is_active: item.is_active
            })),
            toArray()
        ) as Observable<Employee[]>;
     }
...