Tengo el siguiente código que debería funcionar para un control deslizante:
let timeOut, timeOut2; over = 1; let back = 0; setInterval(change2, 8000); async function change2() { innerFront = slides[over]; innerBack = slides[back]; await setTimeout(change, 8000); innerFront.querySelectorAll('figure')[0].classList.remove('isActive'); innerFront.classList.remove('slideshow__inner--front'); innerBack.querySelectorAll('figure')[0].classList.remove('isActive'); innerBack.classList.remove('slideshow__inner--back'); over -= 1; if (over < 0) over = slides.lenght; back = over - 1; if (back < 0) back = slides.lenght; slides[over].classList.add('slideshow__inner--front'); slides[back].classList.add('slideshow__inner--back'); } function change() { return new Promise(function(resolve, reject) { innerFront.querySelectorAll('figure')[0].classList.add('isActive'); timeOut2 = setTimeout(()=> { innerBack.querySelectorAll('figure')[0].classList.add('isActive'); }, 1000); resolve(); }); }Mi problema consiste en el hecho de que la función 'cambiar' parece no realizarse a pesar de Await for Promise. De hecho, las instrucciones posteriores se ejecutan inmediatamente, y obviamente esto genera errores. Todavía tengo dudas sobre las promesas, que estoy estudiando, y aquí creo que puede haber algo conceptual. ¿Alguien tiene la paciencia para explicarme dónde me equivoco?
Hay un error tipográfico dentro de change2() , escribiste lenght en lugar de length dos veces.