取消RACCommand执行

时间:2014-05-21 13:07:14

标签: objective-c cocoa reactive-cocoa raccommand

有没有办法取消执行RACCommand

例如,我有一个带有无限执行信号的命令,如下所示:

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        __block BOOL stop = NO;

        while (!stop) {
            [subscriber sendNext:nil];
        }

        return [RACDisposable disposableWithBlock:^{
            stop = YES;
        }];
    }];
}];

那么在致电[command execute:nil]后如何停止呢?

1 个答案:

答案 0 :(得分:1)

我对RACCommand有点新鲜,所以我不确定是否有更好的方法来做到这一点。但我一直在使用takeUntil:取消信号来停止执行。

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        while (true) {
            [subscriber sendNext:nil];
        }
    }] takeUntil:cancellationSignal];
}];