Я делаю много вызовов, используя REST, и решил разделить эти вызовы подключения в отдельный объект, который будет вызываться из моих классов пользовательского интерфейса.Вот функция, которую я использую, она не будет ждать завершения запросов.Я не уверен, что я делаю неправильно, и пытался использовать множество примеров вне стека и сети, в том числе:
Дождаться окончания выполнения цикла swift for с асинхронными сетевыми запросами
Ожидание завершения задания
//let loader = from Oauth2/p2_OAuth2 pod to load JSON
func ConnectionHandler()
{
let dg = DispatchGroup()
switch self.RequestType
{
case aRequest:
//if I make a single call here, works fine
case bRequest:
//if I make a single call here, works fine
case abRequest:
//when making requests for both type a and b, can’t get it to work
dg.enter()
loader.perform(request: self.userDataRequest)
{ response in
do
{
let json = try response.responseJSON()
self.structWrapper.aArray = self.loadAArray(dict: json)
}
catch let error {
self.didCancelOrFail(error)
}
}
self.dexRequestType = DexRequestTypesEnum.glucoseValues
//ignore last line. should be removed.
loader.perform(request: self.userDataRequest)
{ response in
do
{
let json = try response.responseJSON()
self.structWrapper.bArray = self.loadBArray(dict: json) }
catch let error {
self.didCancelOrFail(error)
}
}
dg.leave()
dg.notify(queue: .main)
{
//will print, but requests are not complete, arrays are empty, even though breakpoints hit in loading them.
for x in self.structWrapper.aArray
{
print(x.displayTime + ":" + x.units)
}
for y in self.structWrapper.bArray
{
print(y.displayTime + ":" + String(y.someNumber)
}
print(“tasks complete”)
}
}
}