带数组的 RxJS 运算符

Lud*_*Lud 2 rxjs angular

当我从 HTTP 调用接收 RxJS 数组时,我认为我对 RxJS 如何使用数组存在误解。

例如我有:

  public getNews(): Observable<News[]> {
    return this.http.get<News[]>("/news");
  }
Run Code Online (Sandbox Code Playgroud)

当我想在上面使用一个简单的地图之后:

this.newsService.getNews().pipe(map(news => {
    return {
      // DO SOMETHING HERE WITH NEWS
    };
}));
Run Code Online (Sandbox Code Playgroud)

问题是我的参数的类型,Typescript 告诉我它是一个新闻数组,但它在地图内,所以通常它必须是新闻类型,对吗?

我不知道我是否清楚,但如果有人可以解释我,那就太好了:)

请参阅此处的屏幕截图

Mas*_*sta 6

您好,要将数组转换为项目列表,您可以使用flatMap运算符;您可以使用subscribe或 transform处理每个项目map

this.service.getNews().pipe(
    flatMap(x => x)
).subscribe(x => {
    // do something for each item
});
Run Code Online (Sandbox Code Playgroud)

或者

this.service.getNews().pipe(
    flatMap(x => x),
    map(x => {
    // transform each item
    })
);
Run Code Online (Sandbox Code Playgroud)

第二个仍然是一个 Observable