我需要用has和repo来构造这个对象。我觉得嵌套这些地图是一个非常糟糕的做法,而且这是流程的失败点。该怎么写?
let observ = observable$.flatMap(repos => {
return Rx.Observable.from(repos.map(repo => ({hash: getHash(repo), repo})))
})
答案 0 :(得分:0)
我认为这种方法没有明显错误。如果您想简化代码,可以使用concatMap
,它将数组流转换为项目流。然后我们可以做一个普通的地图:
let repo$ = observable$.concatMap(identity);
let observ = repo$.map(repo => ({hash: getHash(repo), repo }));
identity === x => x
。
如果您想避免使用concatMap
调用observable$
流,那么您在构建identity
流时也可以在链中提前应用{{1}}。