Typescript Rxjs将可观察到的API结果转换为服务函数中的另一个可观察结果

Typescript Rxjs将可观察到的API结果转换为服务函数中的另一个可观察结果,typescript,rxjs,observable,transform,Typescript,Rxjs,Observable,Transform,我有一个加载程序服务,其结果是可观察的,其中包含一个CSV文件。每行表示(例如)Person对象的不同实体,逗号分隔的部分表示Person的属性,例如id、年龄、姓名等 加载器服务功能是: loadtTextFile(path: string): Observable<string> loadAllPerson(): Observable<Array<Person>> map操作员是您的朋友。试着这样做: loadAllPerson(): Observ

我有一个加载程序服务,其结果是
可观察的
,其中包含一个CSV文件。每行表示(例如)Person对象的不同实体,逗号分隔的部分表示Person的属性,例如id、年龄、姓名等

加载器服务功能是:

loadtTextFile(path: string): Observable<string> 
loadAllPerson(): Observable<Array<Person>> 

map
操作员是您的朋友。试着这样做:

loadAllPerson(): Observable<Person[]> {
  return loadTextFile(PATH).pipe(
    map((csv: string) =>
      csv.split('\n')
         .map((rows: string[]) => rows.map((row: string) => row.split(',')))
         .map((table: string[][]) => 
           table.filter((cols: string[]) => !Number.isNaN(+cols[0]) && !Number.isNaN(+cols[3]))
                .map((cols: string[]) => new Person(+cols[0], cols[1], cols[2], +cols[3], cols[4], cols[5], cols[6], cols[7], new Date(cols[8])))
         )
    )),
  );
}
loadAllPerson():可观察{
返回loadTextFile(PATH).pipe(
映射((csv:string)=>
csv.split(“\n”)
.map((rows:string[])=>rows.map((row:string)=>row.split(','))
.map((表:字符串[]])=>
table.filter((cols:string[])=>!Number.isNaN(+cols[0])&&!Number.isNaN(+cols[3]))
.map((cols:string[])=>新人物(+cols[0],cols[1],cols[2],+cols[3],cols[4],cols[5],cols[6],cols[7],新日期(cols[8]))
)
)),
);
}

这不起作用怎么办?
loadAllPerson(): Observable<Person[]> {
  return loadTextFile(PATH).pipe(
    map((csv: string) =>
      csv.split('\n')
         .map((rows: string[]) => rows.map((row: string) => row.split(',')))
         .map((table: string[][]) => 
           table.filter((cols: string[]) => !Number.isNaN(+cols[0]) && !Number.isNaN(+cols[3]))
                .map((cols: string[]) => new Person(+cols[0], cols[1], cols[2], +cols[3], cols[4], cols[5], cols[6], cols[7], new Date(cols[8])))
         )
    )),
  );
}