如何在RxSwift中按顺序循环观察?
发布时间:2020-12-14 04:38:15 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个轮询网络服务的流.此时它会查询服务,然后在短暂延迟后完成.我希望继续流重启而不是完成从而永远轮询服务. 你可以做点什么…… myPollingStream.repeat() 但是在RxSwift中重复实际上是repeatElement,因此实际上生成了一个可观察的流.您可以
我正在尝试创建一个轮询网络服务的流.此时它会查询服务,然后在短暂延迟后完成.我希望继续流重启而不是完成从而永远轮询服务.
你可以做点什么…… myPollingStream.repeat() 但是在RxSwift中重复实际上是repeatElement,因此实际上生成了一个可观察的流.您可以将这些连接映射到扁平的序列序列,但RxSwift没有concatMap运算符. 那么如何在RxSwift中循环一个observable呢? 我希望请求是顺序的,而不是并发的,因此flatMap不是一个选项,因为它合并了导致重叠请求的流.我正在寻找类似于retry()的工作方式,但重新启动onComplete而不是onError 解决方法Observable.repeatElement(myPollingStream,scheduler: MainScheduler.instance).concat() > repeatElement(_:scheduler :)将创建无限的轮询查询流. 注意 虽然上述方法在理论上有效,但没有背压实现,repeatElements(_:scheduler :)会发出事件,直到最终耗尽内存.这使得此解决方案不适用于RxSwift 3.0.更多细节可以在RxSwift存储库的this issue中找到. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |