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

413
Visualizações
NodeJS: cómo eliminar una instancia activa de una clase

He estado buscando una respuesta durante bastante tiempo y lo mejor que he hecho hasta ahora es muy ineficiente y estoy seguro de que hay una solución más simple para esto.

Actualmente tengo una clase que está tratando de hacer una determinada tarea para recuperar una salida, para esperar esa salida, uso Promise resolve/reject.

 class Example { start() { return new Promise(async (resolve, reject)) { var step_1 = await this.function1(); var step_2 = await this.function2(step_2); var step_3 = await this.function3(step_3); resolve(await this.function4(step_3); } } } module.exports = Example;

Supongamos que la función 1-4 existe y realiza una determinada tarea que tarda un tiempo en realizarse. Luego creamos varias de estas instancias:

 const Example = require("./Example.js"); for (let i = 0; i < 10; i++) { const example = new Example(); example.start(); }

Entonces, esto toma de segundos a minutos para devolver una salida, pero mi problema actualmente es cómo matarlos a todos a la mitad de la resolución.

Mi primer enfoque fue simplemente rechazar o resolver una salida en un setInterval que verifica si el código se eliminó o no, pero eso no parece funcionar debido a 1 de 2 problemas:

  • Si el proceso pasa a la siguiente función, seguirá realizando esa función.
  • Si una de las funciones de paso está actualmente activa y finaliza justo después de que resuelva/rechace el método start() , simplemente continuará con el código.
 const { isKilling } = require("./main.js"); // isKilling() returns either true or false class Example { start() { return new Promise(async (resolve, reject)) { var interval = setInterval(function() { if (isKilling()) return resolve("KILLED"); // or reject("KILLED"); // The instance of this class still continues. }, 1); var step_1 = await this.function1(); var step_2 = await this.function2(step_2); var step_3 = await this.function3(step_3); resolve(await this.function4(step_3); } } } module.exports = Example;

Por cómo lo resolví de manera muy ineficiente, hice lo de setInterval pero luego agregué un fragmento de código que verifica si la clase ha sido eliminada y simplemente regresa en casi todas las líneas (lo sé, es malo)

¡Así que espero que si alguien aquí puede ayudarme! ¡Gracias de antemano!

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