我是异步和同步机制的新手。 在我的代码中,我必须在另一个完成后执行一个代码行。 它看起来像这样:
func something(){
let workerQueue = DispatchQueue.global(qos: .userInitiated)
workerQueue.async{
let info = getInfoFromTheWeb()//I need the info value in order to perform the next line
saveToDB(info: info)
DispatchQueue.main.async {
//update a label text in the ui after getting and saving that info
}
}
}
请您的专业意见..
答案 0 :(得分:4)
你应该DispatchGroup
。通过使用DispatchGroup
一个函数/代码行将等待另一个函数完成执行。
例如
let myGroup = DispatchGroup()
myGroup.enter()
let info = getInfoFromTheWeb()
当你从简单的电话
获得info
时
myGroup.leave()
当您执行以下代码的电话leave()
功能时
myGroup.notify(queue: DispatchQueue.main) {
saveToDB(info: info)
/// Update UI elements
}
答案 1 :(得分:0)
尝试这样的事情:
func something() {
let workerQueue = DispatchQueue.global(qos: .userInitiated)
workerQueue.async{
if let info = getInfoFromTheWeb() {
saveToDB(info: info)
DispatchQueue.main.async {
//update a label text in the ui after getting and saving that info
}
}
}