如何避免嵌套循环
How to avoid nested loops
我需要用 has 和 repo 构建这个对象。我觉得嵌套这些地图是一种非常糟糕的做法,而且它是流程的失败点。这个应该怎么写?
let observ = observable$.flatMap(repos => {
return Rx.Observable.from(repos.map(repo => ({hash: getHash(repo), repo})))
})
我没有发现这种方法有任何明显的错误。如果您想简化代码,可以使用 concatMap
,它将数组流转换为项目流。然后我们可以做一个法线贴图:
let repo$ = observable$.concatMap(identity);
let observ = repo$.map(repo => ({hash: getHash(repo), repo }));
其中 identity === x => x
.
如果您想避免使用 identity
.
调用它,您还可以在构建 observable$
流时在您的链中更早地应用 concatMap
我需要用 has 和 repo 构建这个对象。我觉得嵌套这些地图是一种非常糟糕的做法,而且它是流程的失败点。这个应该怎么写?
let observ = observable$.flatMap(repos => {
return Rx.Observable.from(repos.map(repo => ({hash: getHash(repo), repo})))
})
我没有发现这种方法有任何明显的错误。如果您想简化代码,可以使用 concatMap
,它将数组流转换为项目流。然后我们可以做一个法线贴图:
let repo$ = observable$.concatMap(identity);
let observ = repo$.map(repo => ({hash: getHash(repo), repo }));
其中 identity === x => x
.
如果您想避免使用 identity
.
observable$
流时在您的链中更早地应用 concatMap