Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

313
Visualizações
¿Cuándo usar la palabra clave de suspensión de Kotlin?
fun startAsyncFunc() { launch { asyncFunc1() asyncFunc2() } } fun asyncFunc1() { ... } suspend fun asyncFunc2() { ... }

Puedo terminar el trabajo sin suspend e incluso hace que la prueba sea más fácil (se puede probar sin agregar runBlocking .

Mis preguntas:

  1. asyncFunc1 vs asyncFunc2 , ¿cuál es mejor y por qué?
  2. Si asyncFunc2 es mejor, ¿debería usar siempre suspend cada vez que se ejecute una función en las rutinas?

Actualizar

En los lanzamientos recientes de Coroutines de Kotlin, observo que si un método no contiene ningún código de rutinas (como launch , async , etc.), el compilador se queja. This inspection reports a suspend modifier as redundant if no other suspend functions are called inside . Así que asumo que suspend solo debe usarse cuando es imprescindible.

Actualizar2

Un consejo de Google

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Solo debe declarar su función suspend si es necesario. Diría que, ante la duda, si el compilador no te obliga, no uses suspend .

La mayoría de las veces, si tiene una buena razón para que su función se suspenda, significa que está haciendo algo que probablemente requiera que llame a funciones de suspensión como withContext de todos modos, o podría ser una función basada en devolución de llamada que expone como suspensión a través suspendCoroutine / suspendCancellableCoroutine . De cualquier manera, llamar a esas funciones lo obligaría a declarar su propia función suspend .

Tenga en cuenta que declarar una función suspend no permite que las personas que llaman hagan nada más de lo que podían hacer cuando su función no estaba suspendida. En todo caso, está limitando el uso de su función.

Una posible excepción a la regla "no lo use a menos que sea forzado" sería si está definiendo esta función como un método abierto (por ejemplo, en una interfaz) y espera que algunas implementaciones/anulaciones necesiten llamar a funciones de suspensión ellos mismos.

over 4 years ago · Santiago Trujillo Relatório

0

La palabra clave suspend significa que la rutina se puede suspender para su ejecución posterior.

Habiendo dicho eso, debe usarlo conscientemente para corrutinas que se suspenderán (por ejemplo, su asyncFunc2() hizo una llamada HTTP y está esperando respuesta para procesarlo)

Asi que.

  1. Use suspend para funciones que se retrasarán de alguna manera (en espera de algunos cálculos, respuesta de API, etc.)
  2. suspend fun solo se puede ejecutar desde coroutine. Entonces, si se suspende, bloqueará la rutina. Elimine la palabra clave de suspend , pero ejecútela en la rutina y tendrá el mismo efecto. Sin embargo, si ejecuta esta función desde fuera de la rutina, bloqueará el subproceso en el que se estaba ejecutando.

Al probar rutinas, siempre debe invocar runBlocking . Si no lo hace, es posible que no se complete una rutina que se suspenda, lo que resultará en una prueba fallida.

over 4 years ago · Santiago Trujillo Relatório

0

Use la palabra clave suspender para:

  • funciones que se retrasarán de alguna manera (en espera de algunos cálculos, solicitudes de red)

    • cada vez que la función llama a otras funciones de suspensión
    • función que llama a withContext() – withContext() es una función de suspensión que proviene de la biblioteca Coroutine

La regla general es no marcar una función suspendida a menos que se vea obligado a hacerlo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda