我在服务中定义了以下方法
fun uploadFile(
fileName: String,
): Observable<Status> {
return Observable.fromCallable {
fileUploadService.uploadFile(
fileName
)
}
.subscribeOn(schedulerProvider.ioScheduler)
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是从挂起方法调用此方法,从挂起方法调用 Observable 并等待 Observable 结果的最佳方法是什么。
vieweModelScope.launch {
coroutineScope {
val deferredResults = async { uploadFileHelper(fileName) }
val status = deferredResults.await()
}
}
fun uploadFileHelper (fileName: String): Message {
return uploadService.uploadFile(
request = request,
).toBlocking().first()
}
Run Code Online (Sandbox Code Playgroud)
我知道,我可以重构上述服务以取出“fileUploadService.uploadFile”来方法并直接调用它。但我正在尝试构建 RxJava Observable+Coroutine 共存的原型。
使用kotlinx.coroutines.rx3suspend fun <T> ObservableSource<T>.awaitFirst(): T的扩展(或, , , )awaitFirstOrDefaultawaitFirstOrElseawaitFirstOrNullawaitSingle
viewModelScope.launch {
val status = uploadService.uploadFile(request).awaitFirst()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |