如何在执行下一个操作之前等待请求完成 (Xcode 11)
How to wait for request to finish before execute the next operation (Xcode 11)
我有一个允许在 firebase 上获取数据的代码。我需要等到请求被满足后才能执行下一步操作。
我试过这样的事情:
var a = [String : Any]()
let group = DispatchGroup()
group.enter()
DispatchQueue.main.async {
dbRef.child("results/users").observeSingleEvent(of: .value) { (snapshot) in
if let res = snapshot.value as? [String:Any] {
a = res
}
}
}
group.notify(queue: .main) {
print(a)
}
但它不起作用:我预计这会显示 a 的值。 (用于从 firebase 检索数据的代码有效。)相反,没有显示任何内容。
有人有想法吗?
谢谢
你可以这样解决:
var a: [String:Any]
func myFunction(completion:@escaping (Bool) -> () ) {
DispatchQueue.main.async {
dbRef.child("results/users").observeSingleEvent(of: .value) { (snapshot) in
if let res = snapshot.value as? [String:Any] {
a = res
}
}
}
myFunction { (status) in
if status {
print(a!)
}
}
我有一个允许在 firebase 上获取数据的代码。我需要等到请求被满足后才能执行下一步操作。
我试过这样的事情:
var a = [String : Any]()
let group = DispatchGroup()
group.enter()
DispatchQueue.main.async {
dbRef.child("results/users").observeSingleEvent(of: .value) { (snapshot) in
if let res = snapshot.value as? [String:Any] {
a = res
}
}
}
group.notify(queue: .main) {
print(a)
}
但它不起作用:我预计这会显示 a 的值。 (用于从 firebase 检索数据的代码有效。)相反,没有显示任何内容。
有人有想法吗? 谢谢
你可以这样解决:
var a: [String:Any]
func myFunction(completion:@escaping (Bool) -> () ) {
DispatchQueue.main.async {
dbRef.child("results/users").observeSingleEvent(of: .value) { (snapshot) in
if let res = snapshot.value as? [String:Any] {
a = res
}
}
}
myFunction { (status) in
if status {
print(a!)
}
}