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

214
Views
Cómo romper un bucle en una devolución de llamada

hola, ¿cómo puedo salir del bucle for? Quiero poder salir de él en la devolución de llamada en la declaración if

Quiero que este programa cree una carpeta en el directorio dado y cada vez que arroje un error quiero que cambie el nombre de la carpeta y le agregue un número para que cuando diga que la carpeta ya existe, cree una carpeta única name hasta que no arroje un error.

Verificaré el código de error más tarde, ayúdame a resolver esto primero.

 const path = require('path'); function folder(folderName) { for (let i = 1; i <= 10; i++) { let pathNumber = i; let fullPath = folderName + pathNumber; fs.mkdir(path.join("D:", fullPath), (err) => { if (!err) { return; // I want to break out of the loop here } }) } } folder("folder");
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Mucho más simple sin esperar

 const numFolders = 10, folders = Array.from(Array(numFolders), (_,i) => `folder${i+1}`), len = folder.length; let cnt = 0; const makeFolder = () => { if (cnt >= len) return; // stop because done fs.mkdir(path.join("D:", fullPath), (err) => { if (err) { makeFolder(); // only call again if error } cnt++ } makeFolder()
about 4 years ago · Juan Pablo Isaza Report

0

No puede escribir el código de esa manera porque el ciclo for ya se realizará antes de que se llame a cualquiera de las devoluciones de llamada fs.mkdir() . Son asincrónicos y suceden MÁS TARDE.

Si desea ejecutar una iteración del ciclo, incluida fs.mkdir() antes de pasar a cualquier otra, puede usar async/await await con fs.promises.mkdir() .

Así es como podría verse una solución con fs.promises.mkdir() . También agregué el manejo de errores para el caso en que ya existen los 10 nombres de subdirección que está intentando.

 async function folder(folderName) { let lastError; for (let pathNumber = 1; pathNumber <= 10; pathNumber++) { let fullPath = path.join("D:", folderName + pathNumber); try { await fs.promises.mkdir(fullPath); return fullPath; } catch(e) { lastError = e; // ignore error so we keep trying other numbers } } throw lastError; } folder("folder").then(fullPath => { console.log(`dir created: ${fullPath}`); }).catch(err => { console.log(err); });
about 4 years ago · Juan Pablo Isaza Report
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!