在 Combine 中,您如何创建一个发送一个值但永远不会完成的发布者?
In Combine how do you make a publisher that sends one value but never completes?
在 Combine 中,如何创建发送一个值但永远不会完成的发布者?
在以下代码中调用了 receiveCompletion,但我不希望它调用:
Just(1)
.sink(
receiveCompletion: {
print("Completion: \([=10=])")
},
receiveValue: {
print("Value: \([=10=])")
}
)
如何才能只发出一个值但不完整...?
可能有一些更好的方法,但是 CurrentValueSubject
,从不触及它的 value
,会如您所愿地工作:
let publisher = CurrentValueSubject<Int, Never>(1)
publisher
.sink(
receiveCompletion: {
print("Completion: \([=10=])")
},
receiveValue: {
print("Value: \([=10=])")
}
)
输出:
Value: 1
您可以将 Empty(completeImmediately: false)
附加到任何发布者以防止其正常完成。
Just(1)
.append(Empty(completeImmediately: false))
.sink(
receiveCompletion: { print("completion: \([=10=])") },
receiveValue: { print("value: \([=10=])") })
在 Combine 中,如何创建发送一个值但永远不会完成的发布者?
在以下代码中调用了 receiveCompletion,但我不希望它调用:
Just(1)
.sink(
receiveCompletion: {
print("Completion: \([=10=])")
},
receiveValue: {
print("Value: \([=10=])")
}
)
如何才能只发出一个值但不完整...?
可能有一些更好的方法,但是 CurrentValueSubject
,从不触及它的 value
,会如您所愿地工作:
let publisher = CurrentValueSubject<Int, Never>(1)
publisher
.sink(
receiveCompletion: {
print("Completion: \([=10=])")
},
receiveValue: {
print("Value: \([=10=])")
}
)
输出:
Value: 1
您可以将 Empty(completeImmediately: false)
附加到任何发布者以防止其正常完成。
Just(1)
.append(Empty(completeImmediately: false))
.sink(
receiveCompletion: { print("completion: \([=10=])") },
receiveValue: { print("value: \([=10=])") })