【发布时间】:2016-11-08 11:19:10
【问题描述】:
我需要创建依赖 API 调用,其中第二个调用需要第一个返回的值。首先想到的是使用 flatMap
ApiManager.shared
.createReport(report: report)
.flatMap { (report) -> Observable<Report> in
return ApiManager.shared.createReportStep(reportID: report.ID)
}
createReport 返回Observable<Report>,其中调用成功后返回更新的Report 模型(带ID),之后我需要调用API 来创建报告步骤,其中需要report.ID。
该代码看起来一切正常,但当我需要在每个步骤之后执行某些操作时(createReport 和createReportStep)就会出现问题。我将代码放在onNext 块中,但是在两个步骤都完成后它只被调用一次。
有没有办法在两个步骤之后接收 onNext 信号?我可以使用这样的东西:
ApiManager.shared
.createReport(report: report)
.concat(ApiManager.shared.createReportStep(reportID: report.ID))
这会像我想要的那样发出两个信号,但是我又从哪里获得更新 report.ID 以传递到 createReportStep?
【问题讨论】:
-
请帮助我更好地理解您的问题。创建
Report后,您希望创建ReportStep,这需要创建报告后生成的报告ID。接下来要做的是访问刚刚创建的Report和ReportStep对象。对吗?
标签: ios swift rx-swift reactivex