¡Por favor, ayuda!
La función debe imprimir las letras "A" a "F" en la consola, una letra por segundo.
La función funciona sin setInterval/setTimeout.
// setInterval(alphabet, 1000, 'a', 'f'); function alphabet(from, to) { var a = [], i = from.charCodeAt(0), j = to.charCodeAt(0); for (; i <= j; ++i) { setInterval(() => { a.push(String.fromCharCode(i)); }, 1000); } // return console.log(a); return a; } console.log(alphabet('a', 'f')); function printLetters(start, finish) { //should add checks here to validate start comes before finish console.log(start) if (start == finish) { return } else { setTimeout(printLetters, 1000, String.fromCharCode(start.charCodeAt(0)+1), finish) } } printLetters('a', 'f')Es posible que desee probar esto. Puedes pegarlo en codepen
var a = []; function alphabet(from, to) { console.log(a); setInterval(() => { var i = from.charCodeAt(0); var j = to.charCodeAt(0); for (; i <= j; ++i) { if(a.includes(String.fromCharCode(i))){ }else{ console.log(String.fromCharCode(i)) a.push(String.fromCharCode(i)); break; } } }, 1000); return a; } alphabet('a', 'f');Aquí hay una solución que usa una función de suspensión async .
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function alphabet(from,to){ var currentLetter = from[0]; while(currentLetter.charCodeAt(currentLetter[0]) != to.charCodeAt(to[0])+1){ let l = currentLetter await sleep(1000) console.log(l) nextLetter = String.fromCharCode(currentLetter.charCodeAt(currentLetter[0])+1) currentLetter = nextLetter; } } alphabet('A','F');