2016-04-11 19 views
0

öldürmez için benim kod:Akıllı yolu 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]; 

Bu yapı benim webservice öldürebilir. Bunu göndermenin daha akıllı yolu nedir? Buradaki fikir şudur ki, nesneler nesnelerdir ve herkes için istek göndermek istiyorum ama eğer dizide 1000 nesne Webservice ölebilirse, fikrim bir önceki bittiğinde istek gönderiyor ve sonunda delege gönderiyor.

+0

Sunucuya bir kimlik listesi göndererek 1 istek gönderebilmeniz ve sunucunun 1 yanıt göndermesini sağlayabilmeniz gerekir ... geçerli kodunuz muhtemelen web servisini bozmak yerine ağa su basıyor – Wain

+0

Bu webservice, giriş tam olarak 1 ID alır. Kimliğinin e.x dizisini gönderemiyorum – hds

cevap

0

İdeal olarak farklı bir web servisiniz olur.

Değişemeyeceğinizi varsayarak, isteklerinizi sıraya koymanız gerekir, böylece bir seferde çok fazla şey yapmazsınız ve gerekiyorsa işlemeyi askıya alabilirsiniz. Potansiyel olarak, geri gelen istekleri, sıranın sonuna ekleyerek yeniden deneyebilirsiniz. Bunun için

NSOperationQueue uygundur. Web servisini çağırmak için işlem mantığınızı içermek üzere NSBlockOperation'u kullanabilirsiniz. Sen

RQOperation Temelde fikir bir dizide web API çağrıları saklamak için ve daha sonra seri bir şekilde onları bir şekilde gerçekleştirilebilir kullanabilirsiniz

0

1 ila 4. bazı değere maxConcurrentOperationCount ayarlamayı unutmayın. (Bir önceki tamamlandığında, bir sonraki işlemi gerçekleştirin)

İçinde hoş bir örnek var. Umarım yardımcı olur.

Yorum olarak göndermek için yeterli sayıda yanıt yok, dolayısıyla yanıt.