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

115
Visualizações
Dom no se actualiza de inmediato cuando se usa convertToBlob en un lienzo fuera de pantalla

Tengo una aplicación que necesita generar un par de miles de imágenes. La forma en que lo hago es con un conjunto de png precargados (que actúan como capas transparentes) y un lienzo fuera de la pantalla. Dibujo las imágenes en el lienzo, las convierto en un blob y luego escribo la imagen en un div usando una clase personalizada llamada Imágenes.

Primero quiero mostrar una barra de carga y borrar las imágenes antiguas, pero hay un retraso de 3 a 5 segundos antes de que se actualice el dom, aunque el código "vacío()" y "mostrar()" se encuentra al comienzo de la solicitud de clic. .

¿Hay algo que esté haciendo mal con respecto a la asincronía o las promesas que hacen que el dom no se actualice de inmediato?

Aquí hay algo del código:

 // Generate Images $("#generate_images").click(function(){ // Show loading bar $("#progress_bar .progress-bar").css("width", "0%"); $("#progress_bar").show(0); // Show loading spinner $("#loading").show(0); $("#images").empty(); console.log("Generating Images"); $.each(images, function(id, image){ // Sort traits (png layers) var traits = Object.values(image.traits).sort((a, b) => { return a.z_index - b.z_index; }); images[id].layers = []; $.each(traits, function(trait_idx, trait){ images[id].layers.push(preloaded_images[trait.variant_id]) }); }); // Create canvas var canvas = new OffscreenCanvas(1200, 1200); var context = canvas.getContext("2d"); console.log("Generating canvases."); $.each(images, function(id, image){ // Clear the canvas context.clearRect(0, 0, canvas.width, canvas.height); // Draw each image layer $.each(images.layers, function(src, layer){ context.drawImage(layer, 0, 0); }); // Add imageData to screen canvas.convertToBlob().then(function(blob) { // Do something with the blob like render to the screen }); }); });

Cualquier idea sobre cómo hacer esto más eficiente también sería apreciada.

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

0

Generar mil imágenes no es algo que necesariamente deba hacer un navegador, pero debe darle al DOM la oportunidad de actualizarse, así que agregue un tiempo de espera

  1. Recoge lo que quieres hacer en una matriz
  2. No repita, sino que haga

 function generate() { if (arrayCounter >= array.length) return canvas.convertToBlob().then(function(blob) { if (success) { arrayCounter++ generate() } } } collect() generate()
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