【发布时间】:2020-01-22 07:56:32
【问题描述】:
我有以下简单的Future:
class ViewModel {
var cancellables = Set<AnyCancellable>()
func test() {
let trigger = PassthroughSubject<Void, Error>()
let future = Future<String, Error> { promise in
promise(.success("Future Succeded"))
}
trigger
.flatMap { future }
.sink(receiveCompletion: { completion in
print("completion received \(completion)")
}, receiveValue: { val in
print("value received \(val)")
})
.store(in: &cancellables)
trigger.send(())
}
}
我不知道为什么在与另一个发布者(在本例中为 PassthroughSubject)进行平面映射时它永远不会完成,它只会产生值。
当它不是平面映射时,它会产生值并正常完成。
【问题讨论】:
-
当我将
flatMap更改为map并且不进行任何进一步更改时,也不会收到完成。