Cómo hacer que sus funciones de JavaScript duerman

Aprenda a hacer que su función duerma durante un tiempo determinado en JavaScript

A veces, desea que su función pause la ejecución durante una cantidad fija de segundos o milisegundos.

En un lenguaje de programación como C o PHP, llamaríassleep(2)para detener el programa durante 2 segundos. Java tieneThread.sleep(2000), Python tienetime.sleep(2), Go tienetime.Sleep(2 * time.Second).

JavaScript no tiene una función de suspensión nativa, pero gracias a la introducción de promesas (y async / await en ES2018) podemos implementar dicha característica de una manera muy agradable y legible, para hacer que sus funciones se suspendan:

const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}

o, en Node.js, más simple:

const { promisify } = require('util')
const sleep = promisify(setTimeout)

Ver más enprometer

Ahora puede usar esto con elthenllamar de vuelta:

sleep(500).then(() => {
  //do stuff
})

O utilícelo en una función asincrónica:

const doSomething = async () => {
  await sleep(2000)
  //do stuff
}

doSomething()

Recuerde que debido a cómo funciona JavaScript (lea más sobreel ciclo de eventos), esto no detiene la ejecución completa del programa como podría ocurrir en otros lenguajes, sino que solo su función duerme.

Puede aplicar el mismo concepto a un bucle:

const list = [1, 2, 3, 4]
const doSomething = async () => {
  for (const item of list) {
    await sleep(2000)
    console.log('🦄')    
  }
}

doSomething()


Más tutoriales de js: