2016-11-06 3 views
0

Извините за вопрос новичка. У меня есть действие, которое зависит от результата данных, возвращаемых из сети, и для этого действия может потребоваться другой сетевой запрос. Поскольку первый сетевой запрос уже вызван в datatask, я хочу использовать тот же самый поток для второго сетевого запроса, но не знаю, как это сделать. Любой отзыв? ТКСswift, вызывающая сеть в другой раз в той же теме задачи

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 

      } 
     } 

ответ

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 

Это недоразумение. На этом этапе нет проблем с созданием другого сетевого запроса. Все, что делает, - это разместить другой запрос в соответствующей очереди. Неважно, какой поток вы используете, когда планируете это.

Я настоятельно рекомендую Apple Concurrency Programming Guide. У вас могут быть некоторые недоразумения в отношении того, как работает параллельность IOS. Ключевой частью работы iOS является понимание очередей GCD и, в частности, то, как они отличаются от потоков.