Quiero imprimir el alfabeto de la matriz cada 0,5 segundos y cada vez que es una vocal cada 2 segundos.
Me las arreglé para escribir un código de impresión de elementos de matriz cada 0,5 segundos
var alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] var i = 0; for (let i = 0; i < alphabet.length; i++){ setTimeout(function(){ console.log(alphabet[i]); i++; }, 500*i) }¿Cómo implemento el resto?
if (alphabet[i] == 'a' | 'e' | 'i' | 'o' | 'u'){ setTimeout(function(){ console.log(alphabet[i]); i++; }, 2000*i) }Usando Promise() , puede usar el comando Promise.all () , donde Promise.all() espera a que se procesen todas las Promesas en la matriz.
function setIntervalForItem(input = [], vowels = ["a", "e", "i", "o", "u"], defaultInterval = [500, 2000]) { const [interval, _interval] = defaultInterval; var resultPromiseArray = new Array(); for (const char of input) { const delay = vowels.indexOf(char) === -1 ? interval : _interval; resultPromiseArray.push(new Promise(resolve => { setTimeout(() => { resolve({value: char, time: delay}); }, delay); })); } return Promise.all(resultPromiseArray); } var alphabet = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ]; // Then just call: setIntervalForItem(alphabet) .then(result => { for (const object of Object.entries(result)) { const {value, time} = object[1]; console.log(`The delay for character [ ${value} ] was ${time} ms`); } });