2016-11-06 1 views
0

Sorry für Anfänger Frage. Ich habe eine Aktion, die vom Ergebnis der vom Netzwerk zurückgegebenen Daten abhängt, und die Aktion erfordert möglicherweise eine andere Netzwerkanforderung. Da die erste Netzwerkanforderung bereits in der dataskask aufgerufen wird, möchte ich den gleichen Thread für die zweite Netzwerkanforderung verwenden, weiß aber nicht, wie dies zu tun ist. Irgendwelche Trinkgeld? tksSwift, Anruf Netzwerk ein anderes Mal in der gleichen Aufgabe Thread

let task = URLSession.shared.dataTask(with: request as URLRequest) 
     { data, response, error in 

      if func_1 (data) { 
       return 
      }else { 
       //call another network request here, but don't want to do 
       //another task = URLSession.shared.... again since we are already on an async thread 

      } 
     } 

Antwort

1
//call another network request here, but don't want to do 
//another task = URLSession.shared.... again since we are already on an async thread 

Dies ist ein Missverständnis. Es ist kein Problem, an dieser Stelle eine weitere Netzwerkanforderung zu erstellen. Es wird nur eine weitere Anfrage in die entsprechende Warteschlange gestellt. Es spielt keine Rolle, auf welchem ​​Thread Sie laufen, wenn Sie dies planen.

empfehle ich Apples Concurrency Programming Guide. Möglicherweise haben Sie einige Missverständnisse darüber, wie die Gleichzeitigkeit von iOS funktioniert. Ein wichtiger Teil der iOS-Arbeit besteht darin, GCD-Warteschlangen zu verstehen und insbesondere, wie sie sich von Threads unterscheiden.

Verwandte Themen