java - 如何将值从 Observable 返回到 Rxjava 2
问题描述
我遇到了onNext不能包含return的问题,但是我需要返回字符串。该请求是使用 Retrofit 和接口内的工厂 (ApiService) 发出的。
fun getNameAnimal(name : String) : String {
var nameAnimal = " "
val api = ApiService.create()
api.getAnimal("Cat")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ animal ->
// It works
Log.i(LOG, animal.name)
// It NOT works (empty value)
nameAnimal = animal.name
},
{ error ->
Log.e(LOG, error.printStackTrace())
}
)
return nameAnimal
}
在日志中,答案以我需要的格式出现。
该方法位于不是活动或片段的类中。如何实施我的计划?
解决方案
fun getNameAnimal(name : String) : Single<String> {
val api = ApiService.create()
return api.getAnimal("Cat")
.map { animal -> animal.name }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
2. 在活动或片段中
apiWorkingClassInstance.getNameAnimal()
.subscribe(
{ animalName ->
Log.i(LOG, animalName)
//todo
},
{ error ->
Log.e(LOG, error.printStackTrace())
}
)
感谢您的提示 Alex_Skvortsov
推荐阅读
- javascript - .ENV 在 razzle js 中不起作用
- c# - 如何从文本文件的特定位置复制字符串
- amazon-web-services - 更好的是:在启动时配置实例或启动预先支持的映像?
- android - 在android studio中将图像添加到mipmap文件夹时出现问题
- javascript - How to implement side effect on observable property?
- java - 当另一个元素隐藏在 NetBeans 中时,如何阻止元素移动?
- python - 如何在 sortedcontainers.SortedDict 中设置排序谓词?
- java - nexus-staging-maven-plugin 是如何使用的
信息? - php - PHP XML 最后一个数组到 Int
- windows - 以下脚本有什么作用?