ReactiveCocoa - 从未调用flattenMap块

时间:2017-08-02 11:16:19

标签: ios objective-c reactive-cocoa

我使用flattenMap的{​​{1}}方法时出现问题 - 该块永远不会被调用。如果我RACSignal发出相同的信号,它就可以正常工作,问题只出在subscribeNext上。

这是什么工作正常

flattenMap

这是不起作用的:

[[self.aSignal combineLatestWith:self.otherSignal] subscribeNext:^(RACTuple *tuple) {
    // gets called just fine
}];

我错过了什么吗?或者我误解了self.yetAnotherSignal = [[self.aSignal combineLatestWith:self.otherSignal] flattenMap:^RACStream *(RACTuple *tuple) { // never gets called return returnSignal; }]; 的工作原理?

1 个答案:

答案 0 :(得分:1)

您似乎只缺少一点:(至少在您的代码段中)没有人订阅您的新信号!

您正在通过self.yetAnotherSignalself.aSignalself.otherSignalcombineLatest构建新信号(flattenMap)。

但是新信号以及链中的任何运营商在以某种形式订阅之前实际上并没有做任何工作,最简单的形式是通过subscribeNext,就像你在第一个片段中所做的那样。

这不仅仅是flattenMap的情况,与任何操作相同,例如如果您不订阅它,您的第一个示例中的combineLatestWith将不会执行任何操作。同样适用于mapfilter,...您可以命名。