Pls, help!
The function should print the letters "A" through "F" to the console, one letter per second.
The function works without 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')
You might wanna try this. You can paste it on 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');
Here is a solution using an async sleep function.
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');