这两个代码未按顺序执行吗?

时间:2019-08-27 03:07:39

标签: swift firebase firebase-authentication

在加载视图控制器时,我基本上希望应用程序执行以下操作:

  1. 启动匿名登录(使用Firebase) 2,打招呼

但是,使用下面的代码,它会执行 你好 然后登录

有什么帮助吗?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    Auth.auth().signInAnonymously{ (user,error) in
        if let error = error {
            print("Sign in failed: ", error.localizedDescription)
        } else {
            self.anonId = String(user!.user.uid)
            print("Signed in: ",user!.user.uid)
        }

    }


    print("hello")
}

1 个答案:

答案 0 :(得分:1)

登录Firebase可能需要任何时间,因此是作为异步操作实现的。实际上,这意味着依赖于登录结果的任何代码都必须位于回调/完成处理程序内部:

Auth.auth().signInAnonymously{ (user,error) in
    print("hello")
    if let error = error {
        print("Sign in failed: ", error.localizedDescription)
    } else {
        self.anonId = String(user!.user.uid)
        print("Signed in: ",user!.user.uid)
    }
}

这是现代Web API中极为常见的模式,因此最好尽早习惯。