gpt4 book ai didi

swift - 如何取消订阅可观察对象?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:22 24 4
gpt4 key购买 nike

如果我有这样的东西:

  func foo() -> Observable<Foo> {
return Observable.create { observer in
// ...
}
}

func bar() {
foo().observeOn(MainScheduler.instance)
.subscribeNext {
// ...
}
.addDisposableTo(disposeBag)
}

如果我想unsubscribe从稍后在 bar 中的 observable,我该怎么做?

更新

我知道我可以调用 dispose,但是根据 RxSwift docs :

Note that you usually do not want to manually call dispose; this is only educational example. Calling dispose manually is usually a bad code smell.

unsubscribe 是不是没有实现?我已经仔细研究了 RxSwift 代码,就我能理解发生了什么而言,它看起来不像从订阅方法返回的 Disposable 是任何具有有用功能的东西(处置除外)。

最佳答案

您将 foo 返回的 Observable 添加到 disposeBag。它在取消分配时处理订阅。您可以通过调用

“手动”释放 disposeBag

disposeBag = nil

在你类的某个地方。

问题编辑后:您想有选择地取消订阅某些 Observable,可能是在满足某些条件时。您可以使用另一个代表这些条件的 Observable 并使用 takeUntil 运算符根据需要取消订阅。

//given that cancellingObservable sends `next` value when the subscription to `foo` is no longer needed

foo().observeOn(MainScheduler.instance)
.takeUntil(cancellingObservable)
.subscribeNext {
// ...
}
.addDisposableTo(disposeBag)

关于swift - 如何取消订阅可观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458195/

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