在使用 创建函数创建的信号上使用节气门操作员时,我会得到一个奇怪的结果:
RACSignal* signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@"1"];
[subscriber sendNext:@"2"];
[NSThread sleepForTimeInterval:4];
[subscriber sendNext:@"3"];
[subscriber sendNext:@"4"];
[subscriber sendCompleted];
return nil;
}];
[[[signal subscribeOn:[RACScheduler scheduler]] throttle:3] subscribeNext:^(id data) {
NSLog(@"onNext: %@", data);
} completed:^{
NSLog(@"Completed");
}];
根据操作员的目标所期望的是什么(只有在窗口间隔中未收到另一个值时发送隔壁,如果在窗口到期之前收到另一个值,则拒绝上一个值,并且窗口重新启动窗口对于下一个值)是:
onNext: 2
Completed
实际结果是:
onNext: 4
Completed
我想念什么吗?
只需注意"订阅"的存在,必须用" exraveron"代替,以不通过睡眠来阻止线程。