如何避免嵌套循环

时间:2016-03-15 01:27:13

标签: javascript rxjs

我需要用has和repo来构造这个对象。我觉得嵌套这些地图是一个非常糟糕的做法,而且这是流程的失败点。该怎么写?

let observ = observable$.flatMap(repos => {
  return Rx.Observable.from(repos.map(repo => ({hash: getHash(repo), repo})))
})

1 个答案:

答案 0 :(得分:0)

我认为这种方法没有明显错误。如果您想简化代码,可以使用concatMap,它将数组流转换为项目流。然后我们可以做一个普通的地图:

let repo$ = observable$.concatMap(identity);
let observ = repo$.map(repo => ({hash: getHash(repo), repo }));

identity === x => x

如果您想避免使用concatMap调用observable$流,那么您在构建identity流时也可以在链中提前应用{{1}}。