我使用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;
}];
的工作原理?
答案 0 :(得分:1)
您似乎只缺少一点:(至少在您的代码段中)没有人订阅您的新信号!
您正在通过self.yetAnotherSignal
和self.aSignal
从self.otherSignal
和combineLatest
构建新信号(flattenMap
)。
但是新信号以及链中的任何运营商在以某种形式订阅之前实际上并没有做任何工作,最简单的形式是通过subscribeNext
,就像你在第一个片段中所做的那样。
这不仅仅是flattenMap
的情况,与任何操作相同,例如如果您不订阅它,您的第一个示例中的combineLatestWith
将不会执行任何操作。同样适用于map
,filter
,...您可以命名。