结合 flatMap/Scan 携带中间结果

Posted

技术标签:

【中文标题】结合 flatMap/Scan 携带中间结果【英文标题】:Combine flatMap/Scan to carry intermediate result 【发布时间】:2018-05-02 08:06:55 【问题描述】:

我经常发现自己使用 flatmap 链接多个 http 请求,但有时我需要将结果传送到比下一个 observable 更远的地方。我该怎么做呢?

效果:

getAPIKey().flatMap( key in 
    return getData1(key)
)
.flatMap( (key, data) in 
   return getData2(key, data)
)
.map( data in
   data.transform()
)
.subscribe(onNext:  transformed in
//Do something with data
)

这不是真实的例子,所以不要被语义所束缚。

【问题讨论】:

【参考方案1】:

所以我也在 Slack 上为 RxSwift 发布了这个问题。

这是我从 Zsolt Váradi (vzsg) 得到的回复

getFoo().flatMap  foo in
    getBars(ofFoo: foo.id).map  bars in (foo, bars) 

希望这可以帮助其他人

【讨论】:

以上是关于结合 flatMap/Scan 携带中间结果的主要内容,如果未能解决你的问题,请参考以下文章

几个请求同时导致错误的SQL结果

Django-csrf中间件

编辑 SWF 或 FLA 文件

自动发布 FLA 文件;多次调用 Process.Start

理解 RabbitMQ 工作流程

从 .FLA adobe 视频中提取帧