Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

406
Vistas
setInterval vs setTimeout, que es mejor ejecutar un bucle a una velocidad específica
var speed = 200, len = 0; if (e in know) { function typing() { if (len < know[e].length) { if (len === know[e].length - 1) { t.innerHTML = know[e]; g = d.getAttribute("data-bottom") ? d.getAttribute("data-bottom") : 0; if (parseInt(g) < ((d.scrollHeight - t.offsetTop) - p.clientHeight) + 10) d.scrollTo(0, d.scrollHeight); else alert("new message"); } len++; setTimeout(typing, speed); } } typing();

setTimeout vs setInterval código...

 var setIn = setInterval(() => { if (len < know[e].length) { if (len === know[e].length - 1) { clearInterval(setIn); t.innerHTML = know[e]; g = d.getAttribute("data-bottom") ? d.getAttribute("data-bottom") : 0; if (parseInt(g) < ((d.scrollHeight - t.offsetTop) - p.clientHeight) + 10) d.scrollTo(0, d.scrollHeight); else alert("new message"); } len++; } }, speed)

Estoy tratando de crear un bot de respuesta que comience a escribir después de 1 segundo y que responda a la velocidad de String.length y ambos hicieron lo mismo, pero alguien me dijo una vez que usar setTimeout es una mala práctica, pero los necesito. para correr de esa manera exacta. Si hay otra solución, estoy abierto a todas las sugerencias, gracias de antemano.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede tener múltiples enfoques:

  1. setInterval
  2. setTimeout
  3. window.requestAnimationFrame

Si necesita esperar 1 segundo, entonces debe tener un setTimeout y adentro, le recomiendo que use la tercera opción si desea ahorrar rendimiento, pero combinar setTimeout con setInterval es una opción disponible. El uso de los mismos no es una mala práctica en general, solo en casos particulares.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar async/await para emular la escritura y crear retrasos:

 // // Async timeout function const timeout = ms => new Promise(resolve => setTimeout(resolve, ms)); // // Bot typing function const runBot = text => { // Use promises return new Promise(async (resolve, reject) => { // DOM const div = document.getElementById('text'); // Create chars array const chars = text.split(''); // Wait 1 sec before typing await timeout(1000); // Type text while(chars.length) { // Put one char at iteration div.innerHTML += chars.shift(); // Wait some amount await timeout(100); } // Add new line to the text box div.innerHTML += '<br>' // Finish function return resolve(); }); } // // Text typing runner and button controller const typeText = async text => { // DOM const button = document.querySelector('button'); // Disable button button.disabled = true; // Run bot and wait till it finishes await runBot(text); // Enable button button.disabled = false; }
 <div id="text" style="padding:10px;border:1px solid #000"></div> <button onClick="typeText('This is demo text!')">Start bot</button>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda