在 Kotlin 和 RX observable 中手动创建一个对象的 observable
Manually create an observable of an object in Kotlin and RX observable
我写了一个函数,应该 return Observable<GenericResponse>
。我想手动创建 Observable<GenericResponse>
。这可能吗?
fun notifyOnStand(serviceType: String, id: String, action: TimestampedAction): Observable<GenericResponse>? {
if (libraryOfflineDBHelper.getIsNetworkAvailableNow()) {
return api.serviceOrderOnStand(serviceType, id, action)
} else {
val onStandApiData = JsonObject()
onStandApiData.addProperty("serviceType", serviceType)
onStandApiData.addProperty("id", id)
onStandApiData.addProperty("action", action.toString())
var result: Int = 0
launch {
result = offlineDatabaseManager.insertOfflineData(OfflineData(0, onStandApiData.toString(), "notifyOnstand"))
}
if(result > 0) {
val genericResponse = GenericResponse(true)
return Observable<genericResponse> //***THIS IS WHAT I WANT TO RETURN
}
}
}
public class GenericResponse {
@Expose
@OnComplete
protected Boolean success = false;
@Expose
@OnComplete
protected String error;
public GenericResponse() {}
public GenericResponse(Boolean success) {
this.success = success;
}
public Boolean getSuccess() {
return success;
}
public GenericResponse setSuccess(Boolean success) {
this.success = success;
return this;
}
public String getError() {
return error;
}
public GenericResponse setError(String error) {
this.error = error;
return this;
}
}
仅供参考,它会检查是否存在网络连接,然后调用现有改造 api 调用,其中 return 是 GenericResponse 的一个可观察对象,因此它工作正常。
如果没有网络连接,我将数据插入数据库并根据该响应,我想手动创建 Observable<GenericResponse>
.
我该怎么做?
您可以使用 Observable.just
来执行此操作:
return Observable.just(genericResponse)
我写了一个函数,应该 return Observable<GenericResponse>
。我想手动创建 Observable<GenericResponse>
。这可能吗?
fun notifyOnStand(serviceType: String, id: String, action: TimestampedAction): Observable<GenericResponse>? {
if (libraryOfflineDBHelper.getIsNetworkAvailableNow()) {
return api.serviceOrderOnStand(serviceType, id, action)
} else {
val onStandApiData = JsonObject()
onStandApiData.addProperty("serviceType", serviceType)
onStandApiData.addProperty("id", id)
onStandApiData.addProperty("action", action.toString())
var result: Int = 0
launch {
result = offlineDatabaseManager.insertOfflineData(OfflineData(0, onStandApiData.toString(), "notifyOnstand"))
}
if(result > 0) {
val genericResponse = GenericResponse(true)
return Observable<genericResponse> //***THIS IS WHAT I WANT TO RETURN
}
}
}
public class GenericResponse {
@Expose
@OnComplete
protected Boolean success = false;
@Expose
@OnComplete
protected String error;
public GenericResponse() {}
public GenericResponse(Boolean success) {
this.success = success;
}
public Boolean getSuccess() {
return success;
}
public GenericResponse setSuccess(Boolean success) {
this.success = success;
return this;
}
public String getError() {
return error;
}
public GenericResponse setError(String error) {
this.error = error;
return this;
}
}
仅供参考,它会检查是否存在网络连接,然后调用现有改造 api 调用,其中 return 是 GenericResponse 的一个可观察对象,因此它工作正常。
如果没有网络连接,我将数据插入数据库并根据该响应,我想手动创建 Observable<GenericResponse>
.
我该怎么做?
您可以使用 Observable.just
来执行此操作:
return Observable.just(genericResponse)