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

198
Visualizações
ejecutar la siguiente solicitud una vez que se complete la ejecución de la primera solicitud en el nodo

Supongamos que tengo un punto final /print . Cada vez que se realiza una solicitud a este punto final, ejecuta una función printSomething() . Mientras se printSomething() , si el usuario u otro usuario llega a este punto final, se ejecutará printSomething() nuevamente. Si esto ocurre varias veces, el método se ejecutará varias veces en paralelo.

 app.get('/print', (req, res) => { printSomething(someArguments); res.send('processing receipts'); });

El problema con el comportamiento predeterminado es que, dentro de printSomething() , creo algunos archivos locales que son necesarios durante la ejecución de printSomething() y cuando se realiza otra llamada a printSomething() , anulará esos archivos, por lo tanto, ninguna de las llamadas devolver el resultado deseado.

Lo que quiero hacer es asegurarme de que se complete la ejecución de printSomething( printSomething() , antes de que se inicie otra ejecución de printSomething() . o para detener la ejecución actual de printSomething() una vez que se realiza una nueva solicitud al punto final.

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

0

Tiene diferentes opciones según lo que necesite, la cantidad de solicitudes que espera recibir y lo que hace con los archivos que está creando.

Solución 1

Si espera poco tráfico en este punto final

puede agregar una clave única a algunos someArguments según su requerimiento o generarlos aleatoriamente y crear los archivos que necesita en un directorio diferente

Solución 2

Si cree que causará algún problema de rendimiento, debe crear algún tipo de cola y trabajador para manejar las tareas.

De esta manera, puede manejar cuántas tareas se pueden ejecutar simultáneamente

over 4 years ago · Santiago Trujillo Relatório

0

Si está construyendo un sistema REST con llamadas distribuidas, esto suena problemático. Por lo general, no desea que una solicitud bloquee otra. Si el orden de operación es crucial (FIFO), entonces parece un problema de cola de clasificación.

Hay muchas formas diferentes de implementar la cola, puede usar una matriz o algo así o implementar una clase única que extienda eventEmitter.

 const myQueue = new Q() const crypto = require('crypto'); const route = (req,res) => { const uniqeID =crypto.randomUUID() myQueue.once(uniqeID, (data) =>{ res.send(data) }) myQueue.process(uniqID, req.someDaTa) }
over 4 years ago · Santiago Trujillo Relatório

0

Podría usar app.locals , como sugieren los documentos : Once set, the value of app.locals properties persist throughout the life of the application .

Necesitas usar req.app.locals , algo como

 req.app.locals.isPrinting = true; ---- //Then check it if (req.app.locals.isPrinting)

req.app.locals es la forma en que express lo ayuda a acceder a app.locals

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