我有一个 CurrentValueSubject
可能持有已登录用户。
如果它发布了一个用户对象,我只想返回这个。
如果它不发布值,我想从另一个发布者请求该值,然后将其存储在 CurrentValueSubject
发布者中。并返回值。
我想出了以下方法,但实际上并不奏效。
let signedInUser = CurrentValueSubject<[UserEntity], Error>([])
public func getSignedInUser() -> AnyPublisher<[UserEntity], Error> {
signedInUser
.flatMap { userArray -> AnyPublisher<[UserEntity], Error> in
if !userArray.isEmpty {
return self.signedInUser
.eraseToAnyPublisher()
}
else {
return self.userRemoteDataSource.getSignedInUser()
.map { userEntity -> [UserEntity] in
self.signedInUser.send([userEntity])
return [userEntity]
}
.eraseToAnyPublisher()
}
}
.eraseToAnyPublisher()
}