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(两个Justs 和CombineLatest)都是同步操作的。AnyCancellable他们已经发布了他们将在销毁之前发布的所有内容。AnyCancellable但一般来说,如果您订阅Publisher可以异步发布值的 a,则需要保存。