我有一个按钮的测试示例。当用户按下按钮时,称为RAC_request并且正在执行请求。如果用户短时间多次按下此按钮,许多请求将异步执行。我想创建逻辑,以便在 Reactive Cocoa 执行新请求时先前取消信号。我知道 Reactive Cocoa 中存在| config configName |
configName := #ConfigurationOfGTInspectorCore.
config := (MBConfigurationInfo
configurationClass: (Smalltalk globals at: (configName asSymbol)))
configurationRoot: MBConfigurationRoot new;
yourself.
config workingCopy unload
,但我不能正确地执行该逻辑。 RAC如何做到这一点?
答案 0 :(得分:1)
如果用户短时间多次按下按钮,您可以使用throttle
来设置时间。如果间隔时间有很多nextValue,它只需要最新的。你也可以使用switchToLatest。有一个简单的例子,我会对你有用。
[button.rac_command execute:nil];
button.rac_command = [[RACCommand alloc]initWithSignalBlock:^RACSignal *(id input) {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@"TestSignal"];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
}];
}];
}];
[[[button.rac_command.executionSignals throttle:0.5] switchToLatest]subscribeNext:^(id x) {
NSLog(@"%@", x);
}];