大佬教程收集整理的这篇文章主要介绍了ios – ReactiveCocoa 5,ReactiveSwift网络子请求处理和最佳实践,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们拥有和需要的东西:
1.具有无限滚动处理程序的TableView(SVPullTorefresh)
2.每次调用处理程序时获取对象列表
3.从响应中为每个对象发送“子请求”
笔记:
1.一旦viewController关闭(deinit调用),所有请求(父子请求)都将被取消
2.我需要有能力随时取消父请求.这也应该取消所有子请求.
我现在有什么
我知道我在“无限处理程序”中做的是有点“胶带”,但我是ReactiveSwift的新手……
self.tableView.addInfiniteScrollingWithActionHandler { [uNowned self] in self.tempMutableProperty.value = true } self.tempMutableProperty.producer.skipNil().flatMap(.latest) { [uNowned self] tempValueThatIDontNeed in return self.producerForParentrequest(offset: self.offset) .take(during: self.reactive.lifetimE) .on( // handlers for errors,completed,etc value: { [uNowned self] items in self.items.append(items) self.tableView.reloadData() self.offset += items.count // SEND requEST #2 FOR EACH ITEM } ).flatMapError { error in return SignalProducer.empty } }.observe(on: UIscheduler().start()
所以,正如你所看到的,我对tableView进行了分页.我正在为每个页面提取对象列表.然后,对于响应中的每个项目,我需要使用请求#2获取其他信息.
流程和问题:
1.当然我想摆脱tempMutableProperty并以某种方式启动新的父请求而没有某种代理
2.每个子请求应该是独立的,这意味着我希望单独为每个子请求调用值/错误处理程序,而不是等待所有10个子请求,然后调用成功处理程序,收集所有10个响应.此外,某些特定子请求失败不应影响其他运行的子请求
3.用户可以在不等待整个请求过程完成的情况下更改其搜索请求.这意味着一旦用户更改了某些参数,我将清除所有项目,并且我需要在所有子请求中取消父请求并再次启动它.
4.除了#2之外,有时用户可以向下滚动以获取项目的新部分.这将意味着应该启动新的父请求,但来自父请求的先前响应的子请求应继续工作
5.所有请求都应该在self.deinit上取消,所以这一切都应该只在self.lifetime期间工作,但是我不确定放置这个参数的正确位置是什么
我不确定如果不将一次性/信号存储为自身的属性,这一切是否可行,所以如果子请求将以某种方式存储为属性,这不是问题.
感谢大家的帮助
extension Reactive where Base: UITableView { public func infiniteScrollingSignal() -> Signal<Void,NoError> { return Signal { [uNowned base = self.base] observer in base.addInfiniteScrollingWithActionHandler { observer.send(value: ()) } return ActionDisposable { // Unsubscribe the infinite scrolling action handler here if necessary } } .take(during: self.lifetimE) } }
然后,您可以将所有逻辑连接到self.tableView.reactive.infiniteScrollingSignal()
以上是大佬教程为你收集整理的ios – ReactiveCocoa 5,ReactiveSwift网络子请求处理和最佳实践全部内容,希望文章能够帮你解决ios – ReactiveCocoa 5,ReactiveSwift网络子请求处理和最佳实践所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。