【发布时间】:2025-11-20 16:10:15
【问题描述】:
我正在尝试找到一种方法来在 3 个异步 rx-fun 完成后运行一些代码。
有人知道使用 RX 的好方法吗?
我对这个主题很陌生,没有任何可运行的代码要显示,但我可以说我现在在代码中解决问题的方法是在异步部分之后将 3 个布尔值设置为 true每个乐趣都完成了,然后在我正在等待的代码中,我正在运行我订阅的第四个函数(RX Flowable),它检查所有 3 个布尔值是否为真。
看起来有点像这样:
// var async1IsDoneBoolean = false
// var async2IsDoneBoolean = false
// var async3IsDoneBoolean = false
fun async1() {
// Start async work {
// working..
// done!
// async1IsDoneBoolean = true
// }
}
fun async2() {
// Start async work {
// working..
// done!
// async2IsDoneBoolean = true
// }
}
fun async3() {
// Start async work {
// working..
// done!
// async3IsDoneBoolean = true
// }
}
fun useResulfOfAsyncFuns() {
// Create and subscribe to RX Flowable (will repeat until unsubscribed)
// if (async1IsDoneBoolean && async2IsDoneBoolean && async3IsDoneBoolean) {
// Run code after all async is done
// }
}
main() {
async1()
async2()
async3()
useResulfOfAsyncFuns()
}
【问题讨论】:
-
我对 Rx 了解不多,但是您可以通过加入 Job 轻松使用协程,或者如果您想从 Deferred 上等待的工作中获得一些结果。
-
感谢您的回答,我一直在研究协程,我很想选择那个选项。但是,我忘了提到异步函数是对已使用 RX 实现的 Room 数据库的调用,因此我还必须对其他地方的代码进行一些更改。
-
看平面图