Tengo una serie de URL y quiero abrir todas estas URL una por una en la nueva pestaña con el retraso especificado. Probé el siguiente método, pero abre todas las URL de una sola vez después de un retraso de 2 segundos. Por favor sugiera los cambios de código.
items = ["a.com", "b.com", "c.com", "d.com"] items.forEach((url, index) => { if (index <= 49) { setTimeout(() => { window.open(url, "_blank"); }, 2000); } })Use async function para eso.
Ejemplo de implementación.
items = ["a.com", "b.com", "c.com", "d.com"]; function resolveAfter2Seconds(index) { return new Promise(resolve => { setTimeout(() => { window.open(items[index], "_blank") resolve('resolved'); }, 2000); }); } async function asyncCall() { console.log('calling'); let index = 0; while (index < items.length) { const result = await resolveAfter2Seconds(index); console.log(result); // expected output: "resolved" index++; } } asyncCall();