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

135
Views
¿Por qué await no espera la devolución de llamada?

Cuando se usa await en una función con devolución de llamada, como fs.writeFile, await no espera a que se ejecute el código dentro de la devolución de llamada. Por ejemplo:

 const fs = require("fs") async function test() { for (let i = 0; i < 3; i++) { console.log(`processing ${i}`) const fileName = `${i}.json` await fs.writeFile(fileName, JSON.stringify(i), err => { if (err) throw err console.log(`file ${i} is written`) }) console.log(`${i} is done.`) } } test()

El código anterior produce:

 processing 0 0 is done. processing 1 1 is done. processing 2 2 is done. file 1 is written file 0 is written file 2 is written

en vez de:

 processing 0 file 0 is written 0 is done. processing 1 file 1 is written 1 is done. processing 2 file 2 is written 2 is done.

¿Alguien podría explicar por qué await no permite que termine de escribir el archivo antes de continuar?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto se debe a que writeFile no devuelve una Promise y await una resolución de Promesa antes de suspender la ejecución. Puede actualizar a la última versión de writeFile o escribir una función que devuelva una promise :

 const fs = require("fs") async function test() { for (let i = 0; i < 3; i++) { console.log(`processing ${i}`) const fileName = `${i}.json` await writeToFile(fileName, i); console.log(`${i} is done.`) } } function writeToFile(fileName, index) { return new Promise((resolve, reject) => { fs.writeFile(fileName, JSON.stringify(index), err => { if (err) { // denotes failure reject(err) } console.log(`file ${index} is written`); // denotes success resolve(true) }) }); } test()
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!