RxSwift blockingGet等价

ffscu2ro  于 2023-06-04  发布在  Swift
关注(0)|答案(1)|浏览(124)

我正在开发一个相当旧的应用程序,需要处理新的接收方式和旧的遗留线程之间。我开始使用存储库模式,其中所有内容都在Observables中发出。现在我想在旧代码中使用我的新存储库。在RxJava中,这是非常简单的,因为我可以使用blockingGet(),我的自定义线程正在等待,直到产生一些东西或观察完成。我发现有类似RxBlocking的东西,但是:

  • 有一件事是,在文档中提到,它只用于测试,不应该在生产中使用。
  • 我在.first()方法中遇到了很多EXC_BAD_ACCESS的崩溃。

你能给我出些主意如何处理这个问题吗?

ttcibm8c

ttcibm8c1#

我想,我找到了导致EXC_BAD_ACCESS的原因。我的操作被分割在不同的可观察对象之间(例如,我在一个toBlocking().first()中获取数据,然后我修改了数据,并将其保存在下一个toBlocking().first()中。当我将所有内容合并到一个大的observable中,并将我的操作与.map()flatMap()相结合时,一切都开始正常工作。
我以为persistntContainer.newBackgroundContext()总是使用相同的线程,但当我检查时,我注意到,perform()方法使用了不同的线程。

相关问题