I have following method defined in a service
fun uploadFile(
fileName: String,
): Observable<Status> {
return Observable.fromCallable {
fileUploadService.uploadFile(
fileName
)
}
.subscribeOn(schedulerProvider.ioScheduler)
}
What I want to do is invoke this method from suspend method what is the best way to invoke a Observable from suspend method and wait for results from 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()
}
I know, I could refactor above service to take out "fileUploadService.uploadFile" to method and invoke that directly. But I am trying to prototype RxJava Observable+Coroutine coexistence.