• Vamos conhecer primeiro a função setTimeout, uma high-order function que permite executar uma função de callback após um determinado tempo:

    console.log('Programa iniciado!')
    
    const timeoutId = setTimeout(() => {
        console.log('2 segundos se passaram desde que o programa foi iniciado.')
    }, 2 * 1000)
    
  • Outro detalhe legal é que podemos armazenar o retorno do setTimeout, que é um id que identifica o timeout, em uma variável para então cancelar o timeout caso seja preciso com a função clearTimeout:

    console.log('Programa iniciado!')
    
    const timeoutId = setTimeout(() => {
        console.log('2 segundos se passaram desde que o programa foi iniciado.')
    }, 2 * 1000)
    
    clearTimeout(timeoutId)
    
  • Outra função parecida é a setInterval, mas ela serve para que possamos executar uma função de callback continuamente em um intervalo fixo de tempo:

    let seconds = 0
    setInterval(() => {
        seconds += 3
        console.log(`Se passaram ${seconds} segundos.`)
    }, 3 * 1000)
    
  • Além disso, o setInterval também retorna um id que pode ser usado para parar o setInterval:

    let seconds = 0
    const intervalId = setInterval(() => {
        seconds += 3
        console.log(`Se passaram ${seconds} segundos.`)
        if (seconds > 10) {
            clearInterval(intervalId)
            console.log('Tempo esgotado! Encerrando...')
        }
    }, 3 * 1000)