在“合并”中,您如何使发布者发送一个价值却从未完成的发布者?
在以下代码中,receiveCompletion被调用,但我不希望它发生:
Just(1)
.sink(
receiveCompletion: {
print("Completion: \($0)")
},
receiveValue: {
print("Value: \($0)")
}
)
我如何只发出一个值但不完整...?
答案 0 :(得分:2)
也许有一些更好的方法,但是CurrentValueSubject
永远不会碰到它的value
,就会如您所愿地工作:
let publisher = CurrentValueSubject<Int, Never>(1)
publisher
.sink(
receiveCompletion: {
print("Completion: \($0)")
},
receiveValue: {
print("Value: \($0)")
}
)
输出:
Value: 1
答案 1 :(得分:1)
您可以将Empty(completeImmediately: false)
附加到任何发布者,以防止其正常完成。
Just(1)
.append(Empty(completeImmediately: false))
.sink(
receiveCompletion: { print("completion: \($0)") },
receiveValue: { print("value: \($0)") })