![](/img/trans.png)
[英]ReactiveCocoa :: Can I subscribe to a signal inside a createsignal?
[英]ReactiveCocoa subscribe to completed event of flattenmaped signal
这是我的代码段。 问题是它没有达到subscribeCompleted块。 当我在flattenmap块内返回空信号时,它应该立即完成。 是不是
RACObserve(self.object, "mobile").skip(2).doNext { (_) -> Void in
self.tabBarController?.showHud("Updating Profile")
}.flattenMap { (object) -> RACStream! in
return RACSignal.empty()
}.subscribeCompleted { () -> Void in
log.error("Completed")
self.tabBarController?.hideHud()
}
仅当“源”信号完成时, flattenMap
返回的信号才会完成。 在您的情况下,您将flattenMap
运算符应用于以下信号:
RACObserve(self.object, "mobile").skip(2)
仅当观察到的对象被释放时, RACObserve
返回的信号RACObserve
完成。 根据您要实现的目标,您可以使用一些运算符来转换信号并获得另一个将更早完成的信号。
例如,您可以使用filter
和take
以便在发送符合某些条件的第一个值后,生成的信号完成:
RACObserve(self.object, "mobile").skip(2).doNext { (_) -> Void in
self.tabBarController?.showHud("Updating Profile")
}.filter {
//some filtering for the value of self.object.mobile
return $0.checkSomeConditions()
}.take(1)
.subscribeCompleted { () -> Void in
log.error("Completed")
self.tabBarController?.hideHud()
}
请注意,您甚至根本不需要flattenMap
。 该信号将简单地完成,因为take
操作员。
可以将flattenMap视为将整个信号转换为空信号的连接,直到每个空信号完成(被flattenMapped的信号完成),才会发送完成信号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.