func signUpPressed(){
guard let email = signupview.emailTextField.textField.text, let password = signupview.passwordTextField1.textField.text, let name = signupview.nameTextField.textField.text else{
return
}
Auth.auth().createUser(withEmail: email, password: password, completion: {(User, error) in
if error != nil{
print(error)
return
}
let ref = Database.database().reference()
let uid = User?.user.uid!
let userReference = ref.child("Users").child((uid)!)
let values = ["name": name, "email": email]
userReference.updateChildValues(values, withCompletionBlock: {(err, ref) in
if err != nil{
print(err)
return
}
print("User saved to firebase")
})
})
getUserInfo()
}
我希望由此实现的是能够在Firebase中创建用户之后存储所有用户信息。问题是getUserInfo
方法在print("User saved to firebase")
之前执行。我还了解到,firebase是异步的,这意味着调用总是立即返回,而不会阻塞代码等待结果。只要准备好,结果就会在以后的某个时候出现。现在,我想做的就是在结果“进入”之后调用一个方法。我该怎么办?
答案 0 :(得分:0)
将对调用getUserInfo()
的调用放在结果准备就绪时执行的完成块内。
答案 1 :(得分:0)
异步不会阻塞主线程,也不会阻止方法
use
从响应返回之前开始运行,因此您需要像这样将其插入getUserInfo()
的完成块内
updateChildValues