Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

alternativa a setTimeout

no curso, o professor postergou a mensagem de alert com setTimeout para que o DOM terminasse de exibir as letras na tela

setTimeout(function () {
                if (jogo.ganhou()) {
                    alert('Ganhou!');
                } else if (jogo.perdeu()) {
                    alert('Uma pena, tente novamente.');
                }
                jogo.reinicia();
                reinicia();
            }, 200);

Existe um jeito de ao inves de colocar um tempo que não é exatamente o tempo de exibição da letra da tela, para alguma função que consegue saber o tempo exato quando termina de exibir a letra na tela e exibe o alert apos isso?

2 respostas

Boa noite, Antonio! Como vai?

Sua pergunta é muito boa! A solução alternativa seria ouvir um evento que o JS disparasse quando os li's já tivessem sido renderizados na tela. Contudo, não existe tal evento no JS como pode ser visto aqui.

Sendo assim, a forma mais fácil de resolver a situação é fazendo exatamente como o mestre Flávio fez durante o curso! Inclusive, só a título de curiosidade, vc poderia até trocar o valor 200 para 0 que iria continuar funcionando! O atraso por menor que seja já resolve o problema, o objeto mesmo é só tirar a prioridade que o alert() tem sobre a renderização da tela.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

solução!

Na verdade existe, só esses dias eu descobri. É com uso de Promisses

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software