我必须使用彼此相关的2个数据库对象。我这样做的方式创建了嵌套订阅。我阅读了几个博客,但无法找到一种方法来取消嵌套订阅。任何指针都会受到赞赏。
主题包含子项列表。检索完所有孩子后,我需要打印"主题名称"在遍历所有孩子之后,+"子名称"。这是问题陈述的简化版本。唯一的问题是数据服务返回我需要订阅的数据库对象的可观察对象。
let ds = DatabaseService()
func createBindings() {
_ = ds.getTopics()
.flatMapLatest{self.updateSections(array: $0)}
.subscribe()
}
func updateSections(array: [Topics]) -> Observable<Void> {
for topic in array {
let children = topic.children
for id in children {
_ = ds.getChildWith(id: id).map { lo in
//do business related stuff
}
.subscribe()
}
}
return .never()
}
我想在flatMapLatest中避免另一个订阅。
答案 0 :(得分:0)
您可以尝试将ctrl <- trainControl(method = "cv", number = 3, returnResamp = "all",
savePredictions = "final", # needs to be final or all
classProbs = FALSE, index = createMultiFolds(training$y, k = 3, times = 1))
创建的流与combineLatest运算符合并。 (所有这些流都需要完成才能完成返回的流)。
它看起来应该像这样:
getChildWith(id: id)
P.S。尝试避免忽略let ds = DatabaseService()
func createBindings() {
_ = ds.getTopics()
.flatMapLatest{self.updateSections(array: $0)}
.subscribe()
}
func updateSections(array: [Topics]) -> Observable<Void> {
let allStreams = array.flatMap { topic in
topic.children.map { id in
return ds.getChildWith(id: id).map { lo in
//do business related stuff
}
}
}
return Observable.combineLatest(allStreams, { _ in () })
}
,您将永远不会释放该流。