1

有什么办法可以取消 a 的执行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]呢?

4

1 回答 1

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];
}];
于 2014-05-21T21:35:25.607 回答