cra*_*777 3 async-await swift combine
我试图在应该返回 AnyPublisher 的方法中调用 Swift 5.5 异步抛出方法,但我很难实现这一点。我尝试使用Future(promise),但不起作用,我只设法找到一个 Swift 5.5 API 将基于闭包的方法转换为异步方法。
class Loader {
func loadSomeData() -> async throws [String] {
/// some code
}
}
class Service {
let loader: Loader
init(loader: Loader) {
self.loader = loader
}
func someDataPublisher() -> AnyPublisher<[String], Error> {
// How can I convert this?
try await loader.loadSomeData()
}
}
Run Code Online (Sandbox Code Playgroud)
class Service {
let loader: Loader
init(loader: Loader) {
self.loader = loader
}
func someDataPublisher() -> AnyPublisher<[String], Error> {
return Deferred { [loader] in
Future { promise in
Task {
do {
promise(.success(try await loader.loadSomeData()))
} catch {
promise(.failure(error))
}
}
}
}
.eraseToAnyPublisher()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |