let a = Just("a")
let b = Just("b")
_ = Publishers.CombineLatest(a, b).map { a, b in
print(a, b)
}
这是我的简单CombineLatest
测试。我在onAppear
函数中调用这个方法。但是,我print(a,b)
的没有被调用。我应该如何修复我的代码以运行print(a, b)
?
let a = Just("a")
let b = Just("b")
_ = Publishers.CombineLatest(a, b).map { a, b in
print(a, b)
}
这是我的简单CombineLatest
测试。我在onAppear
函数中调用这个方法。但是,我print(a,b)
的没有被调用。我应该如何修复我的代码以运行print(a, b)
?
在给定 a 之前, APublisher
不会产生值Subscriber
。运算符map
不是.Subscriber
最简单的解决方案(如 Sajjon 所述)是使用sink
:
let a = Just("a")
let b = Just("b")
_ = Publishers.CombineLatest(a, b).sink { a, b in
print(a, b)
}
请注意,它sink
返回一个AnyCancellable
,当它AnyCancellable
被销毁时,它会取消订阅。在这个例子中,_ =
意味着我没有保存它AnyCancellable
,所以它立即被销毁。这在这里无关紧要,因为Publisher
本例中的所有 s(两个Just
s 和CombineLatest
)都是同步操作的。AnyCancellable
他们已经发布了他们将在销毁之前发布的所有内容。AnyCancellable
但一般来说,如果您订阅Publisher
可以异步发布值的 a,则需要保存。