Я хочу, чтобы очередь1 завершилась и использовала данные, которые я получаю в CardTheme, и использовала эти данные для вызова второго API. Я хочу использовать group.wait() для достижения этой цели. Но вообще застрял. Кажется, что моя группа находится в основном потоке и вызывает тупик. Я использую пакет Moya для вызова своего API. Как дождаться ответа одного API и использовать данные для вызова другого API?
let queue1 = DispatchQueue(label: "getBirthdayCardTheme", attributes: .concurrent)
let queue2 = DispatchQueue(label: "getBirthdayCardDetail", attributes: .concurrent)
let group = DispatchGroup()
group.enter()
queue1.async(group: group){
InsuranceDataModel.shared.getCardTheme(completionHandler: {
group.leave()
},errorHandler:{
group.leave()
})
}
group.wait()
group.enter()
queue2.async(group: group){
InsuranceDataModel.shared.getCardDetail(sender_theme_id: "", pageSize: "1", pageNow: "1", completionHandler: {
group.leave()
}, errorHandler: {
group.leave()
})
}
Я редактирую свой код, и это отлично работает для обходного пути. Это странно, что group.wait() не может использовать и вызывает зависание представления.
let group = DispatchGroup()
group.enter()
InsuranceDataModel.shared.getCardTheme(completionHandler: {
//get sender_theme_id here
group.leave()
},errorHandler:{
group.leave()
})
group.notify(.main){
InsuranceDataModel.shared.getCardDetail(sender_theme_id: "", pageSize: "1", pageNow: "1", completionHandler: {
}, errorHandler: {
})
}