Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) existe comando parecido com Sleep do PHP no java script


Dioniton

Pergunta

10 respostass a esta questão

Posts Recomendados

  • 0

As funções setInterval e setTimeout não são perfeita, mas são a melhor forma de se fazer isso.

Essa função sleep se baseia em um loop que só pára quando o tempo se passa, deixando o navegador "travado".

Já viram algum site que utiliza AJAX de forma síncrona ?

Se não tiveram a oporunidade de testar, vejam esse link: http://www.tableless.com.br/artigos/ajaxdemo2, mais precisamente no terceiro artigo (XmlHTTPRequest e Threads)

É realmente muito irritante o navegador travado dessa forma.

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo, vou dar uma esplicada so pra intenderem o porque que fica travado. Um erro que muitos cometem, é dizer que ajax faz a mesma coisa que threads. Resumindo, thread é processamento paralelo, onde você faz 2 coisas ao mesmo tempo e o ajax não usa processamento paralelo e sim processamento assincrono.

O que significa o assincrono do ajax? SImples: Ele faz um teste para ver qual codigo/funcao executara mais rapido primeiro e então executa ele primeiro. Por isso da a impressao de que o objeto XMLHttpRequest, faz 2 coisas ao mesmo tempo, porque ele sempre faz primeiro akilo que e mais rapido. Bom, resumao de tudo isso é que javascript não trabalha com threads, sendo assim, ajax tmb não já que ajax é puro javascript de maneira assincrona(não paralela :P).

então, o for é uma funcao (na verdade é uma construcao da linguagem, mas vamos deichar isso de lado :D), e por ser uma funcao, ela é considerada num escopo geral como um unico codigo. Se o XMLHttpRequest tivece que escolher qual executar primeiro, ele testaria se a funcao vai terminar mais rapido ou não. Mas assim, não se faz testes consecutivos dessa maneira pra nada! O principal erro que os desenvolvedores de jogos iniciantes cometem, é fazer as animacoes dos personagens, na velocidade que o processador consegue seguir. Se o processador for deichado livre para percorrer um loop, ele vai ficar naquilo ate o loop terminar e vai deichar de fazer o resto. Como javascript não trabalha com processamento paralelo, assim que o interpretador entrar naquele loop, so vai fazer outra coisa quando tiver saido do loop.

Mas agora, me respondam uma coisa: o que exatamente esse sleep deveria fazer que já não faz? O sleep do php tmb trava tudo ate que o tempo passado como parametro termine. A desvantagem é que todo o resto fica travado mas se levar em consideracao de que javascript não tem threads e que mesmo que não fique travado, ele não podera fazer nada, então essa funcao é bem apropriada. No que exatamente tu precisa usar uma funcao sleep?

Link para o comentário
Compartilhar em outros sites

  • 0

preciso somente dar um intervalo entre a execução de duas funções no javascript, por exemplo executa função x, daqui alguns segundo execute a função Z.

OBs

Pessoal desculpe por demorar a dar continuidade do tópico, mas é que estava muito corrido a minha vida nos últimos dias.

Estava envolvido com o meu casamento e tal aquelas coisas que deixam a gente quase sem cabelo antes do casamento, festa, convidados, etc.

Editado por Dioniton
Link para o comentário
Compartilhar em outros sites

  • 0

O tópico pode ser marcado como Resolvido ?

Danilo, a função sleep cria uma variável armazenando uma data que é igual à atual somada a alguns segundos (passados como parâmetro) e cria um loop até que o tempo atual chegue até essa variável. Isso deixa o navegador totalmente travado.

Citei como exemplo o AJAX de forma síncrona porque o que ocorre é bem parecido. Note que nesse intervalo de tempo você não pode sequer clicar em algum link.

Link para o comentário
Compartilhar em outros sites

  • 0
Danilo, a função sleep cria uma variável armazenando uma data que é igual à atual somada a alguns segundos (passados como parâmetro) e cria um loop até que o tempo atual chegue até essa variável. Isso deixa o navegador totalmente travado.

Citei como exemplo o AJAX de forma síncrona porque o que ocorre é bem parecido. Note que nesse intervalo de tempo você não pode sequer clicar em algum link.

O que ela fazia eu já sabia, o meu questionamento foi com relacao a diferenca (falando a nivel de interpretador) entre usar um setTimeOut por exemplo e um sleep...

Levando em consideracao que javascript não implementa threads, a unica vantagem de utilizar setTimeOut é que ela não trava o navegador... Mas é meio problematica, infelizmente :S

Por mim pode fecha o tópico ^^

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...