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:
たが、これは「シグナルを解放する」と説明されており、それが含まれているリクエストをキャンセルするかどうかはわかりません。どんな助けでも大歓迎です。