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

184
Visualizações
Agregar a la matriz en asíncrono para bucle

Tengo esta función que contiene otras funciones asíncronas anidadas.

Estoy descomprimiendo un archivo zip y luego agregando cada HTMLImageElement a una matriz.

Sin embargo, la matriz está imprimiendo así

impresión de la consola

16 es el número correcto de imágenes que espero, pero no están definidas cuando las console.log() .

 export async function fetchVisuals(TestID: number) { var zip = new JSZip(); const res = await fetch('*DJANGO URL*', { body: JSON.stringify(TestID), method: 'POST' }) let http_ok = res.ok const blob = await res.blob() var bufferPromise = await blob.arrayBuffer(); zip.loadAsync(bufferPromise).then(async ({files}) => { const mediaFiles = Object.entries(files).filter(([fileName]) => fileName.endsWith('.jpg'), ); if (!mediaFiles.length) { throw new Error('No media files found in archive'); } // I'm very confident the issue is to do with the below function let promiseArray = mediaFiles.map(function([,image]) { image.async('blob').then((blob: Blob | MediaSource) => { console.log("mediaFiles loop") const img = new Image(); img.src = URL.createObjectURL(blob) console.log(img) return img }) }) Promise.all(promiseArray).then(function(resultsArray) { console.log(resultsArray) }) }) }

Estoy asignando la promesa de cada imagen a una matriz y luego hago Promise.all() en esta matriz, por lo que no estoy seguro de por qué sigue volviendo como undefined .

Dentro de mediaFiles.map() hago algunas impresiones e imprimen los datos img con éxito.

Impresiones de imágenes

¿Cómo puedo llenar esta matriz con HTMLImageElements ?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No devuelves tu promesa en la función de mapa:

 let promiseArray = mediaFiles.map(function([,image]) { image.async('blob').then((blob: Blob | MediaSource) => { console.log("mediaFiles loop") const img = new Image(); img.src = URL.createObjectURL(blob) console.log(img) return img }) })

debe convertirse en:

 // I'm very confident the issue is to do with the below function let promiseArray = mediaFiles.map(function([,image]) { /*just there : */ return image.async('blob').then((blob: Blob | MediaSource) => { console.log("mediaFiles loop") const img = new Image(); img.src = URL.createObjectURL(blob) console.log(img) return img }) })

Para su segunda pregunta, debe esperar sus promesas y devolver sus resultados:

 export async function fetchVisuals(TestID: number) { var zip = new JSZip(); const res = await fetch('*DJANGO URL*', { body: JSON.stringify(TestID), method: 'POST' }) let http_ok = res.ok const blob = await res.blob() var bufferPromise = await blob.arrayBuffer(); const {files} = await zip.loadASync(bufferPromise); const mediaFiles = Object.entries(files).filter(([fileName]) => fileName.endsWith('.jpg'), ); if (!mediaFiles.length) { throw new Error('No media files found in archive'); } // I'm very confident the issue is to do with the below function let promiseArray = mediaFiles.map(function([,image]) { return image.async('blob').then((blob: Blob | MediaSource) => { console.log("mediaFiles loop") const img = new Image(); img.src = URL.createObjectURL(blob) console.log(img) return img }) }) return await Promise.all(promiseArray); }
about 4 years ago · Juan Pablo Isaza 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