【发布时间】:2020-09-02 08:02:39
【问题描述】:
假设我想创建一个异步函数,该函数调用一些随机 API 并返回一个随机 Int。我想用未来包装它
func createFuture() -> Future<Int, Never> {
return Future { promise in
promise(.success(Int.random(1...10))
}
}
这每次都会返回相同的输出。相反,我想返回 AnyPublisher。
func createAnyPublisher() -> AnyPublisher<Int, Never> { //This is invalid
return AnyPublisher<Int, Never> { seed in
seed.success(Int.random(in: 1...10))
}
}
一个更好的例子:
func guessNumber(num: Int) -> AnyPublisher<Bool, Never> {
asyncRandomNumber { winner in
if num == winner {
// return true
} else {
// return false
}
}
}
private func asyncRandomNumber(completion: (Int) -> Void) {
completion(Int.random(in: 1...10))
}
你如何包装 asyncRandomNumber ?
【问题讨论】: