Hola y disculpas si esto se ha preguntado y respondido, pero después de un par de horas cada día durante la semana pasada buscando, todavía tengo que encontrar una buena solución.
Problema: Tengo un sitio servido con Python/Flask donde tengo un botón específico que me permitirá abrir cada instancia de los sitios de mis clientes, cargada desde una base de datos ( custdata ). El siguiente código en su forma original funciona bien para abrir todas las páginas en nuevas pestañas. El problema que tengo es ayudar a reducir la carga inicial al solicitar las páginas, me gustaría tener un retraso de medio segundo entre cada iteración dentro del ciclo for.
Notas: como se ve a continuación, intenté usar la opción setTimeout con un retraso de 500 milisegundos, pero esto parece solo retrasar la apertura de la primera iteración de las páginas siguientes. El bucle luego abre el resto de las páginas sin demora.
Por ejemplo: si la base de datos tiene 5 clientes para un servidor determinado, la página se cargará, demorará 500 ms y luego cargará las 5 páginas de clientes sin demora entre ellas. El efecto deseado es retrasar la apertura de las páginas de clientes entre cada página de cliente.
<head> <script> function myFunction() { {% for mydata in custdata %} window.setTimeout(function(){ window.open("https://customer.mysite.com/launch/{{ custdata.customer_name }}", "_blank"); }, 500); {% endfor %} } </script> </head> <body onload="myFunction()"> Customer pages should have loaded. If so, you can close this page. If not, ensure popups are not blocked for this site. </body> </html>```Gracias Pablo M por la sugerencia. a continuación se muestra el código actualizado para aumentar el tiempo de espera en 250 ms por iteración dentro del ciclo for. Esto parece haber logrado el objetivo final que estaba buscando:
<script> function myFunction() { let delayiteration=0; {% for mydata in custdata %} window.setTimeout(function(){ window.open("https://customer.mysite.com/launch/{{ custdata.customer_name }}", "_blank"); }, delayiteration); delayiteration=delayiteration+250; {% endfor %} } </script> </head> <body onload="myFunction()"> Customer pages should have loaded. If so, you can close this page. If not, ensure popups are not blocked for this site. </body> </html>