将 Future<void> 转换为 RxJava Observable 或 Flowable
Converting a Future<void> into RxJava Observable or Flowable
如何将 future returning void 转换为 RxJava Flowable 或 Observable?
我正在使用 RxJava 和 AndroidX WorkManager,它提供了 API,return 是 Future<void>
。我知道 RxJava 不处理空值,会立即出现 NullPointerException。我正在使用 Flowable.fromFuture(resultFuture)
,其中 resultFuture 是 Future<Void>
(特别是 ListenableFuture<Void>
),但由于它 returns Null,它使应用程序崩溃。
动机:我想把这个未来变成一个 Rx 可观察/可流动的,这样我就可以在这个未来完成后进行处理。
return Flowable.fromFuture(futureReturningVoid)
.flatMap { Flowable.fromIterable(files) }
...more processing here...
我需要在最后 return 一个 Single
,所以我无法将工作转移到监听器中,Future.addListener
。
我需要可流动的,因为我正在处理多个输入文件,并希望背压防止一次打开太多文件。我包含了 Observable,以防人们的需求不那么复杂。
那为什么不呢:
return Completable.fromFuture(futureReturningVoid)
.andThen(Flowable.fromIterable(files))
基本上是:
return Completable.fromAction { futureReturningVoid.get() }
.andThen(Flowable.fromIterable(files))
如何将 future returning void 转换为 RxJava Flowable 或 Observable?
我正在使用 RxJava 和 AndroidX WorkManager,它提供了 API,return 是 Future<void>
。我知道 RxJava 不处理空值,会立即出现 NullPointerException。我正在使用 Flowable.fromFuture(resultFuture)
,其中 resultFuture 是 Future<Void>
(特别是 ListenableFuture<Void>
),但由于它 returns Null,它使应用程序崩溃。
动机:我想把这个未来变成一个 Rx 可观察/可流动的,这样我就可以在这个未来完成后进行处理。
return Flowable.fromFuture(futureReturningVoid)
.flatMap { Flowable.fromIterable(files) }
...more processing here...
我需要在最后 return 一个 Single
,所以我无法将工作转移到监听器中,Future.addListener
。
我需要可流动的,因为我正在处理多个输入文件,并希望背压防止一次打开太多文件。我包含了 Observable,以防人们的需求不那么复杂。
那为什么不呢:
return Completable.fromFuture(futureReturningVoid)
.andThen(Flowable.fromIterable(files))
基本上是:
return Completable.fromAction { futureReturningVoid.get() }
.andThen(Flowable.fromIterable(files))