一次使用一个RACSignal

时间:2016-01-14 04:18:27

标签: ios objective-c reactive-cocoa

我有一个按钮的测试示例。当用户按下按钮时,称为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如何做到这一点?

1 个答案:

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