2016-04-11 23 views
0

这是我的代码:智能的方式不杀的WebService

for (FlightScopePlayerPlayer *player in self.selectedPlayers) { 
BaseballPlayer_GetBaseballProfileRequest *re = [[BaseballPlayer_GetBaseballProfileRequest alloc]initWithPlayerID:player.ID]; 
      [bseModel.myFlightScopeClient.baseballPlayerServiceClient GetBaseballProfile:re 
                      onCompleted:^(id response) { 
                       BaseballPlayer_GetBaseballProfileResponse *res = (BaseballPlayer_GetBaseballProfileResponse *)response; 
self.player = res.player; 
[self.baseballPlayerList addObject:self.player]; 
[DelegateHelper performProtocol:@protocol(LoadPlayersFromWSModelCallbackDelegate) 
                             withTarget:self.delegates 
                            withSelector:@selector(isResponseRedyToUseAfterGetProfile:) 
                            withArgument:self]; 

这种结构可以杀死我的webservice。什么是更聪明的方式发送这个?这个想法是,在数组中是对象,我想发送请求给大家,但如果在数组中将1000个对象Webservice可以死,所以我的想法是发送请求时,前一个完成并发送委托在最后。

+0

你应该能够发送一个请求到服务器与一个ID列表,并让服务器发送1回应......您目前的代码可能洪泛网络,而不是打破了网络服务 – Wain

+0

这个网络服务创建在输入只能得到1个ID。我不能发送ID的e.x数组 – hds

回答

0

理想情况下,你会有不同的web服务。

假设您无法更改,您需要对请求进行排队,以便在任何时候都不会过多,并且如果需要可以暂停处理。您可能还可以通过将失败的请求重新添加到队列末尾来重试失败的请求。

NSOperationQueue适合于此。您可以使用NSBlockOperation来包含处理逻辑来调用Web服务。一定要设置maxConcurrentOperationCount一些值1和4

0

之间可以使用RQOperation

基本想法是存储在阵列中的网络API调用,那么您可以在串行的方式执行。 (一旦完成,执行下一个)

它有很好的样品。希望有所帮助。

没有足够的代表发表评论,因此回答。