2017-03-29 2 views
1

Je travaille avec DispatchGroup, je l'utilise pour exécuter deux demandes à partir de deux serveurs différents. Lorsque la réponse provient de deux serveurs, DispatchGroup s'appelle notify(), le problème est qu'une réponse du serveur peut ne pas arriver (c'est arrivé une fois) comment DispatchGroup peut s'annoncer après un certain temps? Ou comment puis-je arrêter le DispatchGroup? J'ai fait un exemple, mais je pense que ce n'est pas ce dont j'ai besoin.Comment arrêter DispatchGroup après l'heure? iOS

Timer.scheduledTimer(withTimeInterval: 7.5, repeats: false) { [weak self] (timer) in 
     guard let _self = self else { return } 
     DispatchQueue.main.async { 
      if _self.leaveDispatchGroupDigit == 0 { 
       _self.requestGroup.leave() 
       _self.requestGroup.leave() 
      } 
      if _self.leaveDispatchGroupDigit == 1 { 
       _self.requestGroup.leave() 
      } 
     } 
    } 
+2

Je pense que la création d'une minuterie est une mauvaise façon. Comment exécutez-vous les demandes? Vous pouvez définir un délai d'attente pour eux, de cette façon, dans le rappel, vous pouvez envoyer un événement notifier – carlos21

+1

Je suis d'accord. Corrigez le problème de la racine, que votre requête ne dépasse pas le délai imparti, plutôt que de vous contorsionner pour programmer le problème. – Rob

+0

@ carlos21 Merci pour le conseil, alors je vais le faire. – Alexander

Répondre

1

Création d'un délai d'attente pour la demande est la solution la plus propre dans ce cas :)