Generalizada de la función para evitar repeatativeness

Quiero tener una generalizada de la función para mi repositorio método que hace una llamada a la API. Aquí está el código

RemoteInterface.java

interface RemoteInterface {

    @GET("...")
    suspend fun getRandomImage(): MyModel

    @GET(".../{id}/...")
    suspend fun getRandomImageById(@Path("id") id: String): MyModel
}

Ahora mi Repositoryclass parece que esta -

override suspend fun getImageFromRemote(): MyResult {
        if (util.checkDeviceInternet()) {
            try {
                val result = remoteInterface.getRandomImage()
                if (result.status == "200") {
                    return MyResult.Content(result)
                } else {
                    return MyResult.Error(MyResult.ErrorType.API_ERROR)
                }
            } catch (e: Exception) {
                return MyResult.Error(MyResult.ErrorType.API_ERROR)
            }
        } else {
            return MyResult.Error(MyResult.ErrorType.NO_INTERNET)
        }
    }

    override suspend fun getImageByIdFromRemote(id: String): MyResult {
        if (util.checkDeviceInternet()) {
            try {
                val result = remoteInterface.getRandomImageById(id)
                if (result.status == "200") {
                    return MyResult.Content(result)
                } else {
                    return MyResult.Error(MyResult.ErrorType.API_ERROR)
                }
            } catch (e: Exception) {
                return MyResult.Error(MyResult.ErrorType.API_ERROR)
            }
        } else {
            return MyResult.Error(MyResult.ErrorType.NO_INTERNET)
        }
    }

Como se puede ver, mis 2 métodos en el Repositorio tiene repetitivo cuerpo de la función. Hay alguna manera de que yo pueda escribir una generalización de la función que cumple la misma funcionalidad que estos 2 función?

+1
2019-09-19 14:06:34
fuente
1 respuestas

Usted puede convertir matriz de bytes de la imagen por concating "data:image/png;base64," + data; se puede decir this.setState({image: "data:image/png;base64," + data;})

    async getImage() {
    fetch("http://localhost:5000/api/controller/getimage")
    .then(response => response.json())
    .then(data => {
        console.log(data)
        this.setState({
           image: data

       })
   })
   console.log(this.state.image) // *1
}

*1 línea de impresión null porque esto sucede antes de this.setState. Y this.setState activará la función de procesamiento, a continuación, la imagen se mostrará.

Espero que te ayude :)

+2
2019-09-19 14:23:57

Vea otras preguntas sobre etiquetas