我是靠谱客的博主 温婉月亮,最近开发中收集的这篇文章主要介绍通过AFHTTPSessionManager+RACSupport 或 AFHTTPRequestOperationManager+RACSupport 解决同一信号源(RAC网络请求两次的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在RAC实际使用时发现RAC有一个在网络请求上很严重的问题,就是同一个网络url刷新时所创建的信号源

内部请求会被执行两次或多次的现象,通过代理Charles很容易看到,查了相关资料有说过该问题但大多数并没有直接指出应怎么处理,


现将

AFHTTPRequestOperationManager和 AFHTTPSessionManager相关代码如下(得修改原码)

- (RACSignal *)rac_requestPath:(NSString *)path parameters:(id)parameters method:(NSString *)method {
	return [RACSignal createSignal:^(id<RACSubscriber> subscriber) {
		NSURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil];
		
		AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil];
		RACSignal *signal = [operation rac_overrideHTTPCompletionBlock];
		[self.operationQueue addOperation:operation];
		[signal subscribe:subscriber];
		return [RACDisposable disposableWithBlock:^{
			[operation cancel];
		}];
	}];
}

将后面加上 replay 修改为即可解决:

- (RACSignal *)rac_requestPath:(NSString *)path parameters:(id)parameters method:(NSString *)method {
	return [[RACSignal createSignal:^(id<RACSubscriber> subscriber) {
		NSURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil];
		
		AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil];
		RACSignal *signal = [operation rac_overrideHTTPCompletionBlock];
		[self.operationQueue addOperation:operation];
		[signal subscribe:subscriber];
		return [RACDisposable disposableWithBlock:^{
			[operation cancel];
		}];
	}] replay];
}



最后

以上就是温婉月亮为你收集整理的通过AFHTTPSessionManager+RACSupport 或 AFHTTPRequestOperationManager+RACSupport 解决同一信号源(RAC网络请求两次的问题的全部内容,希望文章能够帮你解决通过AFHTTPSessionManager+RACSupport 或 AFHTTPRequestOperationManager+RACSupport 解决同一信号源(RAC网络请求两次的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部