Как отменить 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: но это описывается как "освобождение сигнала", и я не уверен, отменит ли он в свою очередь запрос, который он содержит, или нет. Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам