【发布时间】:2018-07-26 05:27:37
【问题描述】:
我试图在成功完成映射后调用一个函数。 可观察对象是通过映射从现有流创建的。在映射块内,我订阅以获取映射到最终类型的输出。使用更新的流,我正在考虑调用该函数。但是该函数在我订阅并将其映射到更新的流之前被调用。
这是一个示例代码:
let updatedDataStream = dataStream
.observeOn(MainScheduler.instance)
.map { (data) -> ViewData? in
guard var unknownData = data as? UnknownDataType,
let location = unknownData.dataPoints.first?.location else {
return data
}
let dataModel = DataModel(x: location.x, y: location.y)
self.dataStore.localStore?
.entity(forID: DataModel.entityID)
.filter({$0?.status == .Success})
.take(1)
.unwrap()
.subscribe(onNext: { (localDataModel) in
guard let value = localDataModel.dataValue, value.count > 0 else {
return
}
unknownData.value = value
}).disposed(by: self.disposeBag)
return unknownData
}
self.attachUpdatedData(updatedDataStream)
attachUpdatedData(_:) 预计只有在我们检索到 updatedDataStream 后才会被调用。通过上面的实现,attachUpdatedData(_:) 在数据映射到新值之前首先被调用。有人能指出我正确的方向吗?
【问题讨论】:
标签: swift reactive-programming rx-swift