我是 Swift 的新手,这就是为什么我是 Reactive Cocoa v5 或 Reactive Swift 的新手。
以前我将 RACSignal 与 RAC 2.x 一起使用,我喜欢做这样的事情:
- (RACSignal *)signalForGET:(NSString *)URLString parameters:(NSDictionary *)parameters {
return [RACSignal createSignal:^RACDisposable *(id <RACSubscriber> subscriber) {
AFHTTPRequestOperation *op = [self GET:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
[subscriber sendNext:responseObject];
[subscriber sendCompleted];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[subscriber sendError:error];
}];
return [RACDisposable disposableWithBlock:^{
[op cancel];
}];
}];
}
在这里我喜欢它取消一次性请求,我也可以通过调用dispose
返回信号的方法来手动取消它。
我对 Reactive Swift 中的所有这些东西有点困惑,比如 SignalProducers 等。
请举例说明如何使用最新的 Swift/ReactiveSwift/ReactiveCocoa 版本实现相同的功能。主要要求是能够在任何我想要的地方取消请求(或处置信号),并在处置时自动取消请求