我有一个关于 Swift 3 的 ReactiveCocoa (v5) 的问题。在我的项目中,我有不同的服务。例如 api 或用于从磁盘保存或获取内容。这些服务正在返回 SignalProducer。我现在有一些类似调用不同服务的序列,这些服务相互依赖。这里的顺序:
- 调用服务获取密钥
- 使用 key 调用 api 和 service
- 获取数据表单 api(返回多个模型)
- 使用 first-model-service 保存第一个模型
- 使用 second-model-service 保存第二个模型
在我的序列中,我还必须将来自第二个服务调用的数据传递给模型保存。
keyService.get().flatMap(.latest) { (key) -> SignalProducer<[Data],Error> in
return self.dataService.get()(key: key)
}
.flatMap(.latest) { (data) -> SignalProducer<Bool, Error> in
return self.firstModelService.save(data["Model1"])
}
.flatMap(.latest) { (data) -> SignalProducer<Bool, Error> in
//how to get data here?
return self.secondModelService.save(data["Model2"])
}.startWithFailed({ e in
})
此外,如果SignalProducer
序列中的一个发送错误,则整个序列将停止,并以错误作为参数调用回调。我不知道startWithFailed
这里的功能是否正确。
有没有人和我一样的情况,可以举个例子吗?我阅读了一些教程,但我无法弄清楚。