相关疑难解决方法(0)

RxJS重构嵌套的映射语句

我有一个服务,用于@angular/http从API加载数据.我想为我Components使用这些数据创建检索数据的投影.

因此我写了以下代码:

getById(id: string) {
  return this.http
    .get(`https://my-api.io/${id}`)
    .map(response => response.json())
    .map(contracts =>
      contracts.map(contract =>        # <- Nested map
        new Contract(
          contract['id'],
          contract['description']
        )
      )
    );
}
Run Code Online (Sandbox Code Playgroud)

在第6行中,我有一个嵌套的map-Statement,降低了我的代码的可读性.

我可以做得更好吗?在RxJS中是否有一个操作符,我可以使用它而不是创建这种嵌套?

提前致谢!

refactoring code-cleanup rxjs rxjs5 angular

6
推荐指数
1
解决办法
4836
查看次数

订阅嵌套的Observable

我有一个应用程序,它发出一个http请求来获取项目列表,然后为列表中的每个项目发出一个http请求,以获取有关每个项目的更多详细信息.有效:

class ItemsService {
  fetchItems() {
    return this.http.get(url)
    .map(res => res.json())
    .map(items => items.map(this.fetchItem(item)));
  }

  fetchItem(item: Item) {
    this.http.get(`${url}/${item.id}`)
    .map(res => res.json());
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我会做类似itemsService.fetchItems().subscribe(items => console.log(items))但最终发生的事情是我得到一个可观察数组(每个响应来自fetchItem).我还需要订阅每个内部可观察对象,以便fetchItem实际触发请求.

我也试过使用flatMap而不是map,但在这种情况下似乎有相同的结果.是否有任何方法可以订阅嵌套的observable?

rxjs typescript angular

5
推荐指数
1
解决办法
5172
查看次数

标签 统计

angular ×2

rxjs ×2

code-cleanup ×1

refactoring ×1

rxjs5 ×1

typescript ×1