提问人:Joakim Sjöstedt 提问时间:7/4/2023 更新时间:7/5/2023 访问量:32
如何处理 Combine 的 Future 功能中取消发布商?
How do I handle cancelling of publishers in Combine's Future functions?
问:
在 中,您可以创建一个类似这样的响应式函数:RxSwift
func aFunc() -> Observable<Void> {
return Observable.create({ emitter in
let disposable = Observable
.combineLatest(someObservable,
someOtherObservable)
.subscribe(onNext: { responseA, responseB in
// do stuff
})
return Disposables.create {
disposable.dispose()
}
})
}
您可以使用以下方法获得类似的结果:Combine
Future
func aFunc() -> Future<Void, Error> {
return Future { promise in
somePublisher
.combineLatest(someObservable,
someOtherObservable)
.sink{ responseA, responseB in
// do stuff
}
})
}
我不太明白的是,它似乎没有返回它的等价物Future
RxSwift's
return Disposables.create {
disposable.dispose()
}
如何处理发布商的处置/取消的标准做法?Future
我试着简单地添加:
_ = somePublisher...
但是,发布者不会保持活动状态,根本不会激活。
我应该挂在 .但是他们,我什么时候取消这些?或者有没有某种方法可以返回取消标签,例如在?我错过了什么?.store(in: &cancellables)
publisher
cancellables
RxSwift
答:
1赞
Daniel T.
7/5/2023
#1
答案是,你没有。Combine Future 就像一个 RxSwift Single,一旦开始就无法取消。
评论
Publisher
Future
Future
combineLatest
Future
Future
Observable.create
Future
Observable.create
Observable.create
Observable.subscribe(_:)
Future
Publisher.receive(subscriber:)
Publisher.subscribe(_:)