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

291
Visualizações
¿Cómo envuelve una llamada a una función asíncrona para esperar a que se complete?

Estoy escribiendo una herramienta de línea de comandos en TypeScript. En un momento, necesita detectar, sincrónicamente , sin importar el retraso, si un archivo en el disco es un archivo de audio. Estoy usando MediaInfo.js para esto, y su API es, comprensiblemente, asincrónica, ya que los archivos multimedia pueden ser enormes. Mi objetivo es crear una función síncrona isAudioFile(...) que invocará la API asíncrona de MediaInfo.js, pero de alguna manera esperará una respuesta y devolverá true o false sin convertirse en una función asíncrona.

Intenté simplemente hacer que todo sea asíncrono, pero luego recibo errores de una parte de la cadena de herramientas sobre las funciones de nivel superior que no pueden ser asíncronas. Estoy atascado en las versiones de Node (14.15.1) y TypeScript (4.5.4) que estoy usando por razones poco interesantes. Empecé a sentir que la asincronía en JS/TS es una especie de virus; parece que es solo async/await todo el camino hacia abajo.

Le pregunté a varios desarrolladores de JS en los que confío y respeto, y me dijeron que esto "simplemente no es posible" y que "lo estoy pensando de manera incorrecta", pero nadie ha podido decírmelo todavía. cómo debería estar pensando en ello, o cómo resolver el problema al que me enfrento.

Seguramente debe haber algún equivalente a una variable de condición en la que pueda esperar, incluso en un tiempo de ejecución multitarea cooperativo de un solo subproceso como Node.js. Encontré JSZip-sync que parece lograr algo similar, aunque con una complejidad significativa. ¿ Realmente no hay una manera simple de lograr esta tarea aparentemente más sencilla?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¿Realmente no hay una manera simple de lograr esta tarea aparentemente más sencilla?

Sí, realmente no lo hay.

Su idea de "variable de condición" no funciona en un tiempo de ejecución de subproceso único: si su subproceso único bloquea la variable, no se puede ejecutar ningún otro código que pueda cambiar el valor de la variable.

Hay algunas formas complicadas de lograr esto (por ejemplo, ejecutar un subproceso con spawnSync ), pero no son buenas.

Me han dicho que esto "simplemente no es posible" y que estoy "pensando en ello de manera incorrecta", pero nadie ha sido capaz de decirme cómo debería pensar en ello o cómo resolver el problema. problema que estoy enfrentando.

Debes pensar en el problema de forma asíncrona. La interacción con el sistema de archivos es asíncrona, ¡se necesita tiempo para acceder a esos discos de óxido giratorio!

Sí, la asincronía es "infecciosa", porque si una parte de su función es asíncrona (y necesita pensar en otro código arbitrario que se ejecuta mientras tanto), toda la función lo es. Sin embargo, eso no significa que deba extenderse a su lógica comercial .

" Recibo errores de alguna parte de la cadena de herramientas sobre funciones de nivel superior que no pueden ser asíncronas " suena como un problema solucionable.

about 4 years ago · Juan Pablo Isaza 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