有没有办法取消执行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]
后如何停止呢?
答案 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];
}];