Tengo algunos problemas para ralentizar el bucle de un bucle for y while en javascript.
const insertion_sort = function (array) { for (i = 1; i < array.length; i++) { let key_item = array[i]; let j = i - 1; while (j >= 0 && array[j] > key_item) { array[j + 1] = array[j]; j--; //change HTML through dom manipulation; } array[j + 1] = key_item; } return array; };
El código está arriba. Tengo una función que cambia el dom que realmente funciona cuando lo pongo en mi función. Solo muestra el resultado final que se alinea con lo que quiero. Sin embargo, el problema es que los bucles se ejecutan muy rápido y no pueden mostrar la manipulación de dom en cada iteración del bucle. Lo que creo que debería hacer es reducir la velocidad del bucle, pero la función de tiempo de espera establecido no parece funcionar. Por lo que puedo decir, las promesas tampoco funcionan, ya que es asíncrono, por lo que no estoy exactamente seguro de cómo ralentizaría el ciclo para que un usuario pueda ver cada iteración de la manipulación de dom. Cualquier ayuda sería muy apreciada. O tal vez mi comprensión de la función de tiempo de espera y las promesas no es correcta. ¡Gracias!
Probaste algo como esto:
const val = document.getElementById('test') const array = [500, 1000, 2000, 3000, 4000] function someAPICall(time) { return new Promise((resolve, reject) => { setTimeout(() => { resolve("Resolved") }, time); }) } array.forEach(async(i) => { const res = await someAPICall(i); val.innerHTML = i })
<div id="test">0</div>