Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
JavaScript: espere a que una función termine de procesarse antes de pasar a la siguiente iteración del bucle

Me gustaría hacer que una función espere a que otra termine por completo. Tenemos esta función que procesa una lista de archivos y carga cada uno de ellos en la función loadFileIntoMemory.

Me gustaría que esta función esperara a que la función loadFileIntoMemory termine de manipular y trabajar en dicho archivo antes de pasar a la siguiente iteración del ciclo y llamarlo con el siguiente archivo.

 function processFiles(files) { for (let i = 0; i < files.length; i++) { console.log("Loading File into memory"); loadFileIntoMemory(files[i]); } }

Por lo tanto, cargaría el archivo número 1, esperaría a que todo esté hecho y listo, luego cargaría el archivo 2. No quiero que envíe archivos no deseados en la función loadFileIntoMemory sin que finalice el archivo anterior.

 function loadFileIntoMemory(file) { //create a dictionary using the file name originalValues[file.name] = {}; // create a variable with the file name to pass to storeOriginalValues and replaceOccurence var filename = file.name; // Start reading the file var reader = new FileReader(); reader.onload = function (file) { var arrayBuffer = reader.result; // Here we have the file data as an ArrayBuffer. dicomParser requires as input a // Uint8Array so we create that here var byteArray = new Uint8Array(arrayBuffer); dataSet = dicomParser.parseDicom(byteArray); // Store the original values into the dict storeOriginalValues(filename); // iterate through each metadata field and replace the original value with the de-identified value. console.log("De-identifying values") for (const [key, value] of Object.entries(elementsToRemove)) { var element = dataSet.elements[value]; if (typeof element !== "undefined") { for (var i = 0; i < element.length; i++) { dataSet.byteArray[element.dataOffset + i] = 32; } } } // Check if the Patient ID is still Present after the de-indentification process is completed replaceOccurences(filename, originalValues[filename].PatientID); // replaceOccurences(filename, originalValues[filename].PatientName); // replaceOccurences(filename, originalValues[filename].etc); // download the de-identified DICOM P10 bytestream console.log('Downloading File'); var blob = new Blob([dataSet.byteArray], { type: "application/dicom" }); var url = window.URL.createObjectURL(blob); window.open(url); window.URL.revokeObjectURL(url); }; reader.readAsArrayBuffer(file); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Deberá convertir su loadFileIntoMemory en una Promesa.

 function loadFileIntoMemory(file) { return new Promise((resolve,reject) => { ...... reader.onload = function (file) { ...... return resolve(); //when all is done, resolve the promise. } }) }

Luego puede usar la función en un ciclo asíncrono/espera.

 const processFiles = async (files) => { for (let i = 0; i < files.length; i++) { console.log("Loading File into memory"); await loadFileIntoMemory(files[i]); } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda