Почему Swift Firebase auth () отвечает поздно? - PullRequest
0 голосов
/ 09 января 2020

Почему функция auth () отвечает поздно? Когда статус возвращается, он всегда возвращает значение, определенное в начале функции. Есть ли способ вызвать auth () createUser с функцией?

func register(email: String, password: String) -> Dictionary<String, Any> {
    var status = ["stat": false] as Dictionary<String, Any>
    let handle = Auth.auth().createUser(withEmail: email, password: password) { (result, error) in
        if error != nil {
            status["stat"] = false
            status["statement"] = error!.localizedDescription as String
        } else {
            status["stat"] = true
        }
    }
    return status
}

Функция дескриптора возвращается до конца функции регистра.

1 Ответ

2 голосов
/ 09 января 2020

createUser - это асинхронный метод, вы можете отложить возвращаемое значение до завершения createUser, но это не лучший способ обработки асинхронных методов.

Если вы передаете блок завершения исходному метод как:

func register(email: String, password: String, completion: @escaping(([String: Any]) -> Void)) {
    var status: [String: Any] = ["stat": false]
    let handle = Auth.auth().createUser(withEmail: email, password: password) { (result, error) in
        if error != nil {
            status["stat"] = false
            status["statement"] = error!.localizedDescription as String
        } else {
            status["stat"] = true
        }

        completion(status)
    }
}

Тогда в любом другом месте вы можете быть уверены, что createUser завершил свой курс:

register(email: "email", password: "password") { status in
    // Now it's ready.
    print(status)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...