gpt4 book ai didi

ios - 在Combine iOS 中获取我的订阅取消状态

转载 作者:行者123 更新时间:2023-12-01 21:48:00 25 4
gpt4 key购买 nike

我有这个简单的订阅,我的 subject正在发光的字符串。出于好奇,我想知道我的订阅是否被取消。

Afaik 已取消的管道将不会发送任何完成。
有没有一些方法可以做到这一点?

用例是我可以取消所有订阅并收到一个完成。我可以在哪里清理东西,这可能反射(reflect)了这一点。

PlaygroundPage.current.needsIndefiniteExecution = true

var disposeBag: Set<AnyCancellable> = .init()

let subject = PassthroughSubject<String, Never>()

subject.sink(receiveCompletion: { completion in
switch completion {
case .failure(let error):
print("Failed with: \(error.localizedDescription)")
case .finished:
print("Finished")
}
}) { string in
print(string)
}.store(in: &disposeBag)

subject.send("A")
disposeBag.map { $0.cancel() }
subject.send("B")

最佳答案

可以通过处理事件

subject
.handleEvents(receiveCancel: {
print(">> cancelled") // << here !!
})
.sink(receiveCompletion: { completion in
switch completion {
case .failure(let error):
print("Failed with: \(error.localizedDescription)")
case .finished:
print("Finished")
}
}) { string in
print(string)
}.store(in: &disposeBag)

关于ios - 在Combine iOS 中获取我的订阅取消状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61999061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com