1
resposta

[Dúvida] Função bloqueante runBlocking no controlador

No vídeo Requisições assíncronas da aula 03 coroutines, foi dito que não é recomendado utilizar a função bloqueante runBlocking no controlador em aplicações em produção.

Não ficou claro como seria a implementação de uma chamada para um método que utiliza coroutine a partir do controlador da forma correta.

1 resposta

Olá Gustavo!

Entendo sua dúvida sobre como implementar corretamente uma chamada para um método que utiliza coroutines a partir do controlador em uma aplicação em produção.

Quando estamos lidando com coroutines em Kotlin, é importante evitar o uso da função runBlocking no controlador, pois ela é uma função bloqueante que pode prejudicar o desempenho da aplicação.

Uma forma correta de implementar uma chamada para um método que utiliza coroutines a partir do controlador é utilizando a função launch. Essa função cria uma nova coroutine e a executa de forma assíncrona, sem bloquear o controlador.

Por exemplo, suponha que você tenha um método fazerRequisicao() que utiliza coroutines para realizar uma requisição assíncrona. Você pode chamá-lo a partir do controlador da seguinte forma:

fun meuControlador() {
    // Cria uma nova coroutine
    GlobalScope.launch {
        fazerRequisicao()
    }
}

Dessa forma, a função fazerRequisicao() será executada de forma assíncrona, sem bloquear o controlador.

É importante lembrar que, ao utilizar coroutines, é necessário garantir que todas as dependências estejam corretamente configuradas, como o uso do CoroutineScope adequado e a importação correta das classes necessárias.

Espero que essa explicação tenha sido útil! Se tiver mais alguma dúvida, é só me dizer. Bons estudos!

Espero ter ajudado e bons estudos!