【发布时间】:2020-12-21 16:48:32
【问题描述】:
第一次发帖,老读者……我已经打包了一个对 Firebase 授权 API 的异步调用。我从 SwiftUI 视图函数中调用它。
func authenticateFirebaseEmail(email: String, password: String) ->
Future<String, Error> {
return Future<String,Error> { promise in
Auth.auth().signIn(withEmail: email, password: password) { result, error in
if let error=error {
print("failure detected")
promise(.failure(error))
}
if let result=result {
print("result detected - returning success promise")
promise(.success(result.user.email!))
}
}
}
}
...
func logMeInFuncInView() {
var cancellable : AnyCancellable?
cancellable = authenticateFirebaseEmail(email: self.userEmail, password: self.password).map( {
value in return value
})
.sink(receiveCompletion: { (completion) in
print("completion received")
}, receiveValue: { user in
print("value received")
self.errorMessage = user
})
}
控制台输出如下,但从未达到“收到完成”或“收到值”调用:
result detected - returning successful promise
是包装后的回调、未来、我使用未来的方式,还是我没有完全看到的问题?
【问题讨论】:
标签: firebase swiftui future combine