반응형
NSURLConnection sendAsynchronousRequest : queue : completionHandler : 연속으로 여러 요청을 생성합니까?
나는 NSURLConnection's
sendAsynchronousRequest:queue:completionHandler:
훌륭한 방법을 사용하고 있습니다. 하지만 이제 여러 요청을 연속해서 만들어야합니다.
이 훌륭한 비동기 방법을 사용하면서 어떻게 할 수 있습니까?
원하는 동작에 따라이를 수행 할 수있는 많은 방법이 있습니다.
한 번에 많은 비동기 요청을 보내고 완료된 요청 수를 추적하고 모두 완료되면 작업을 수행 할 수 있습니다.
NSInteger outstandingRequests = [requestsArray count];
for (NSURLRequest *request in requestsArray) {
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
[self doSomethingWithData:data];
outstandingRequests--;
if (outstandingRequests == 0) {
[self doSomethingElse];
}
}];
}
블록을 함께 연결할 수 있습니다.
NSMutableArray *dataArray = [NSMutableArray array];
__block (^handler)(NSURLResponse *response, NSData *data, NSError *error);
NSInteger currentRequestIndex = 0;
handler = ^{
[dataArray addObject:data];
currentRequestIndex++;
if (currentRequestIndex < [requestsArray count]) {
[NSURLConnection sendAsynchronousRequest:[requestsArray objectAtIndex:currentRequestIndex]
queue:[NSOperationQueue mainQueue]
completionHandler:handler];
} else {
[self doSomethingElse];
}
};
[NSURLConnection sendAsynchronousRequest:[requestsArray objectAtIndex:0]
queue:[NSOperationQueue mainQueue]
completionHandler:handler];
또는 비동기 블록에서 모든 요청을 동기식으로 수행 할 수 있습니다.
dispatch_queue_t callerQueue = dispatch_get_current_queue();
dispatch_queue_t downloadQueue = dispatch_queue_create("Lots of requests", NULL);
dispatch_async(downloadQueue, ^{
for (NSRURLRequest *request in requestsArray) {
[dataArray addObject:[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]];
}
dispatch_async(callerQueue, ^{
[self doSomethingWithDataArray:dataArray];
});
});
});
추신이 중 하나를 사용하는 경우 오류 검사를 추가해야합니다.
반응형
'programing' 카테고리의 다른 글
TFS에서 사용자의 모든 "변경 집합"목록을 가져 오는 방법은 무엇입니까? (0) | 2021.01.19 |
---|---|
삼중 결장 스칼라 (0) | 2021.01.19 |
타임 스탬프에서 밀리 초 부분 삭제 (0) | 2021.01.19 |
라디오 버튼을 클릭하여 선택 해제하는 방법은 무엇입니까? (0) | 2021.01.18 |
HashMaps 및 Null 값? (0) | 2021.01.18 |