Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

155
Views
Actualización de los registros de la consola js en el lugar con readline y process.stdout

Estoy tratando de actualizar las líneas de registro de la consola cuando uso readline y process.stdout de nodejs en lugar de volver a imprimir los registros repetidamente.

 const readline = require('readline') let firstLog = true; /** * BEGIN Helper Functions */ function randomIntFromInterval(min, max) { // min and max included return Math.floor(Math.random() * (max - min + 1) + min) } function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)) } function concurrency(array, map, limit) { let arr = [...array] let pendingCount = 0 const results = [] return new Promise((resolve, reject) => { function pump() { while (arr && arr.length && pendingCount < limit) { pendingCount++ map(arr.shift(), pendingCount).then( (result) => { pendingCount-- results.push(result) pump() }, (err) => { arr = null reject(err) }, ) } if (!pendingCount) { return resolve(results) } } pump() }) } /** * END Helper Functions */ const data = []; /** * Seed test data */ for (let i = 0; i < 10; i++) { const item = { name: i.toString(), status: 'initialized' }; data.push(item) log(item) } /** * Process all items concurrently * @param {*} item */ function main() { concurrency(data, async (item ,i) => { await updateStatusAsync(item) log(item, i) }, 3) } /** * Update status while simulating long running task * @param {*} repo */ async function updateStatusAsync(item) { await sleep(randomIntFromInterval(3, 5) * 1000) item.status = "completed" } function log(item, i) { if (i > 0 && firstLog) { i-- readline.moveCursor(process.stdout, 0, -(data.length - i)) readline.cursorTo(process.stdout, 0) firstLog = false } readline.clearLine(process.stdout) process.stdout.write(`${item.name}: ${item.status}\n`) } main()

El código anterior registrará todos los elementos en una matriz y luego, a intervalos aleatorios, cada campo de status se actualizará para reflejar un nuevo valor.

Inicialmente, todos están en estado initialized :

 0: initialized 1: initialized 2: initialized 3: initialized 4: initialized ...

Luego se actualizará a intervalos aleatorios hasta completed .

¿Cómo puedo actualizar cada elemento de línea "in situ" en lugar de tener que volver a imprimirlos todos cada vez que se actualiza un elemento?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!