2017-03-10 80 views
-1

使用由+ createSignal函數創建一個信號,油門操作的時候,我得到一個奇怪的結果:ReactiveObjc - 故障與油門操作

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 

我錯過了什麼嗎?

回答

0

只是注意到「subscribeOn」的存在,它必須由「deliverOn」替換,以便不被睡眠阻塞。