在 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)