我想知道是否有可能累积特定信号的next
之间发生的信号结果。类似特定信号出现之前的缓冲信号
[[[RACSignal
combineLatest:@[signal1, signal2, signal3]]
takeUntil:signal4]
subscribeNext:^(id x) {
// ...
}];
但第signal4
的next
后没有完成。
我正在使用的场景是我有一个viewController1
,其中显示viewController2
。 viewController2
允许用户更改影响viewController1
中显示的数据的object
。目前我在viewController2
上曝光objectChangedSignal
并从viewController1
收听。
不过,我希望收到直接从viewController1
但只有它激发viewWillAppear
信号且仅当viewController1
viewWillDisappear
后发生变化后object
的变化。
希望它是有道理的,谢谢。
谢谢您的广泛答案!但它并没有真正以我想象的方式工作。很可能是由于任务描述不佳:'s1','s2'和's3'不一定会触发。但如果他们这样做,我只希望在's4'发射后才能得到通知。 –
如果's1','s2'或s3'中的任何一个没有发送一个值,那么'-combineLatest:'不会发送一个值 - 它会一直等待,直到发送给它的每个信号都在发送之前发送一个值值的元组。 (有些方法可以处理这个问题,比如使用'-startWith:'。) 它听起来像' - [takeUntil:s4]'不是你想要的,因为这个*完成* s4'时的信号火灾。也许你想要一个'-skipUntilBlock:','-skipWhileBlock:',或'-if:then:else:'operations? – erikprice