0
我试图创建将在处置时取消NSURLSessionDataTask
的信号。问题是,我不能等到任务完成,直到我可以发送下(实施Server-sent Events)值,但我不得不使用NSURLSession
小号委托方法。RACSubject和处置
我在做什么,现在是建立一个RACSubject
并返回它为每一个新的请求。在新事件到达后,我就sendNext:
了解了这个问题。我所遇到的问题是如果没有更多的用户在这个问题上搞清楚何时有效地取消任务。
一种解决方法,我发现迄今是创建一个虚拟信号和与对象合并它(见下文)。
return [[RACSignal createSignal:^RACDisposable *(id <RACSubscriber> subscriber) {
return [RACDisposable disposableWithBlock:^{
if (dataTask.state != NSURLSessionTaskStateCanceling && dataTask.state != NSURLSessionTaskStateRunning) {
[dataTask cancel];
}
}];
}]
merge:self.requests[@(dataTask.taskIdentifier)][kSubjectKey]];
但是必须有更优雅的方式,或者?另外一个缺点是,信号永远不会完成。如果在dummy信号内有,则会立即调用dispose块。
我使用ReactiveCocoa 2.5.X
这可能是一个解决办法,是的。但是我感兴趣,如果有一种方法只使用框架来解决这个问题。 – mAu