ios - 为什么从 flattenMap 返回 empty 不会触发 subscribeCompleted

标签 ios reactive-cocoa racsignal

我使用 flattenMap 转换信号中的任何新值,并且我想根据某些条件停止进程,而不是错误,而是完成状态。下面提到的代码不允许这样做。它只是过滤一些值。如何从 flattenMap 完成?

RACSignal* anySignal = //
[ [ anySignal
 flattenMap: ^(id _)
 {
    return [ RACSignal empty ];
 } ]
subscribeCompleted:
^{
   NSLog(@"Not Called");
}];

最佳答案

-flattenMap:在所有相关信号完成之前不会完成,这意味着 -flattenMap: 的信号被调用,以及从 map block 返回的信号。要完成信号,请查看 -takeUntilBlock: -takeWhileBlock: .

关于ios - 为什么从 flattenMap 返回 empty 不会触发 subscribeCompleted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378560/

相关文章:

iphone - iOS根据来电显示通知

ios - 将可达性与 ReactiveCocoa 集成?

ios - RacSignal 自动处置

objective-c - 拆分 RACSignal 以消除状态

ios - 链接 RACSignals 和回滚

ios - 如果通过 iOS 客户端发送请求,则无法识别参数,Curl 相同的 url 按预期工作

ios - 由于间隙,AVPlayer 流在后台停止

ios - 你可以在一个 Xcode 项目中拥有多个 Root View Controller 吗?

objective-c - 向 RACSubscriber 发送错误时需要返回吗?

ios - 有人根据 RACSignal 制作了自更新可变 TableView 吗?