gpt4 book ai didi

ios - 多个 ASIHTTP 请求

转载 作者:行者123 更新时间:2023-11-29 04:24:18 25 4
gpt4 key购买 nike

我发现这两个url不会同时返回数据。我想知道如何确保网址同时返回。我怎样才能将这段代码更改为GCD。是推荐的吗?我在代码中创建了调度队列,但它没有绘制任何内容,不起作用。没有 GCD,它可以工作,但不会同时返回。任何帮助将不胜感激!

-(void)httpRequest{

_weak ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url1];
[request1 setCompletionBlock:^{
NSString *responseString1 = [request1 responseString];
//dispatch_async(backgroundProcess1,^(void){
[self plotOverlay1:responseString1];
//});
}];
[request1 setFailedBlock:^{
NSError *error=[request1 error];
NSLog(@"Error: %@", error.localizedDescription);
}];

[request1 startAsynchronous];


_weak ASIHTTPRequest *request2 = [ASIHTTPRequest requestWithURL:url2];
[request2 setCompletionBlock:^{
NSString *responseString2 = [request2 responseString];
//dispatch_async(backgroundProcess2,^(void){
[self plotOverlay2:responseString2];
//});
}];
[request2 setFailedBlock:^{
NSError *error=[request2 error];
NSLog(@"Error: %@", error.localizedDescription);
}];

[request2 startAsynchronous];


}

最佳答案

您无法保证两个独立的异步请求同时返回。

一种解决方案是链接请求 - 换句话说,在第一个请求的完成 block 中启动第二个请求 - 然后在第二个请求的完成 block 中对两个请求进行处理。

允许两个请求并行运行的另一种方法是在类上创建属性来保存请求的响应。在请求完成处理程序中,您可以将适当的属性设置为响应字符串的值,然后调用新方法。该方法将检查两个请求的responseString 属性是否有值,如果有,则进行处理,如果没有,则不执行任何操作。这样,只要一个请求完成,就不会发生任何事情(哪个请求先完成并不重要),但一旦另一个请求也完成,您的处理就会完成(对于两个请求)。

-(void)httpRequest
{
_weak ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url1];
[request1 setCompletionBlock:^{
self.responseString1 = [request1 responseString];
[self checkIfBothRequestsComplete];
}];
[request1 startAsynchronous];

_weak ASIHTTPRequest *request2 = [ASIHTTPRequest requestWithURL:url2];
[request2 setCompletionBlock:^{
self.responseString2 = [request2 responseString];
[self checkIfBothRequestsComplete];
}];
[request2 startAsynchronous];
}

- (void)checkIfBothRequestsComplete
{
if (self.responseString1 && self.responseString2) {
[self plotOverlay1:self.responseString1];
[self plotOverlay2:self.responseString2];
}

}

关于ios - 多个 ASIHTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com