Как отменить NSURLSessionDataTask "Внутри" RACSignal
Я использую Reactive Cocoa для объединения и сбора нескольких сетевых запросов вместе (как RACSignals) следующим образом:
[[[RACSignal merge:requestSignals] collect] subscribeNext:^(NSArray *results){...}
Каждый отдельный RACSignal создается так:
- (RACSignal *)signalForMyRequest { RACSignal *signal =
[RACSignal createSignal:^RACDisposable
(id<RACSubscriber> subscriber) {
NSURLSessionDataTask *task = [self myRequest success:nil failure:nil];
return [RACDisposable disposableWithBlock:^{
[task cancel];
}];
}];
return signal;
}
Это все отлично работает. Мой вопрос заключается в следующем: есть ли способ отменить фактический запрос (т.е. NSURLSessionDataTask
) внутри отдельного сигнала RAC? Я использую subscribeNext:
блок объединенного сигнала, который возвращает RACDisposable
- который я могу распоряжаться, но это относится ко всей операции слияния, а не к отдельному сигналу. Я смотрел на такие вещи, как takeUntil:
но это описывается как "освобождение сигнала", и я не уверен, отменит ли он в свою очередь запрос, который он содержит, или нет. Любая помощь приветствуется.