rxjava使用Single在doOnSuccess中传递参数
我正在尝试使用单个参数在doOnSuccess中传递一个参数 然而,我得到了一个错误,我似乎无法解决rxjava使用Single在doOnSuccess中传递参数,java,kotlin,rx-java,Java,Kotlin,Rx Java,我正在尝试使用单个参数在doOnSuccess中传递一个参数 然而,我得到了一个错误,我似乎无法解决 Java 8 io.reactivex:rxjava:1.3.6 kotlin 1.2.21 错误在.doOnSuccess中。因为我想将消息传递给HandletTranslationResponse class TranslateInteractor(val repository: Respository) { fun requestNetworkTranslated(message
Java 8
io.reactivex:rxjava:1.3.6
kotlin 1.2.21
错误在.doOnSuccess中。因为我想将消息传递给HandletTranslationResponse
class TranslateInteractor(val repository: Respository) {
fun requestNetworkTranslated(message: String): Completable {
return repository.fetchTranslation(message)
.doOnSuccess { handleTranslationResponse(message, it) }.toCompletable()
}
private fun handleTranslationResponse(message, String, translatedResponse: TranslatedResponse) {
saveTranslation(
"",
translatedResponse.content,
translatedResponse.translationEngine)
}
private fun saveTranslation(message: String, content: String, engine: String) {
/* Save to local storage */
}
}
我如何将信息和从TranslatedResponse获得的信息传递回HandletTranslationResponse
存储库是一个java类,它返回一个:
Type mismatch: inferred type is String but TranslatedResponse was expected
请求
data class TranslatedResponse(
val content: String,
val translationEngine: String)
对于networkAPI,我在java代码段中提供了以下内容:
data class TranslateRequest(val message: String)
公共接口网络API{
单取翻译(TranslateRequest请求);
}
非常感谢您的建议,您之所以不能这样做,是因为
doonAccess
只接受一个参数,即存储库返回的任何参数
您需要以某种方式将原始消息添加到存储库返回的响应中。有两个选项(例如,使用对
或新的数据类
)
例如:
public interface NetworkAPI {
Single<TranslatedResponse> fetchTranslation(TranslateRequest request);
}
现在,您的存储库成为:
data class Translation(
val originalMessage: String,
val translatedMessage: TranslationResponse
)
之所以不能这样做,是因为doonAccess
只接受一个参数,即存储库返回的任何参数
您需要以某种方式将原始消息添加到存储库返回的响应中。有两个选项(例如,使用对
或新的数据类
)
例如:
public interface NetworkAPI {
Single<TranslatedResponse> fetchTranslation(TranslateRequest request);
}
现在,您的存储库成为:
data class Translation(
val originalMessage: String,
val translatedMessage: TranslationResponse
)
也许{handleTranslationResponse(it)}
?我已经更改了参数,因为我需要将消息传递给handleTranslationResponse。因此,我已更改为{handleTranslationResponse(message,it)}
传递消息和'it'是否正确可能{handleTranslationResponse(it)}
?我已更改参数,因为我需要将消息传递给handleTranslationResponse。所以我改为{handleTranslationResponse(message,it)}
传递消息和“it”是否正确
class TranslateInteractor(val repository: Respository) {
fun requestNetworkTranslated(message: String): Completable {
return repository.fetchTranslation(message)
.doOnSuccess { handleTranslationResponse(it) }.toCompletable()
}
private fun handleTranslationResponse(translation: Translation) {
saveTranslation(
translation.originalMessage,
translation.translatedMessage.content,
translation.translatedMessage.translationEngine)
}
private fun saveTranslation(message: String, content: String, engine: String) {
// do whatever you want!
}
}