ReactiveObjc - 油门操作员问题

时间:2017-03-10 00:04:46

标签: ios objective-c reactive-programming

在+ createSignal函数创建的信号上使用油门操作符时,我得到一个奇怪的结果:

    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");
}];

根据操作员的目标预期(仅当我们在窗口间隔中没有接收到另一个下一个时发送nexts,并且如果在窗口到期之前收到另一个值,则拒绝先前的值并且窗口重新启动以获取下一个值):

onNext: 2
Completed

,实际结果是:

onNext: 4
Completed

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

注意&#34; subscribeOn&#34;必须由&#34; deliverOn&#34;不要在睡眠时阻止线程。