Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilker

Parar o script por um período

Recommended Posts

alguem ai sabe alguma forma de "parar" o script por um periodo de tempo?? tipo um sleep() ou wait()...oq eu quero ateh da pra faze com setTimeout()... mas no meu kso n compensa(no meu kso, o script tem q pausar por um tempo caso uma variavel ainda n esteja carregada, pausa um tempo para verificar novamente)c alguem souber como parar o script por determinado tempo, avisa aki ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra... c eu for usar settimeout eu vou ter uma complicacao imensa... pq eu vo precisa criar uma filao esquema eh o seguinte, por Ajax eu carrego um arquivo de template (eh uma API minha para janelas internas), e minha ideia é o seguinte, qdo for exibir a janela, o script verifica c o template ja foi carregado, e se nao foi, ele para por alguns instantes e verifica novamente, ateh q o template tenha sido carregado...o template tem que ficar em arquivo externo para facil leiturase eu for usar setTimout eu 1 tenho que ter uma referencia externa para o objeto (minha API eh em class), e esse nao eh o maior problema, o problema eh qdo eu tiver uma lista de janelas esperando o template para ser aberta... ai eu ja tenho q criar uma fila de janelas, fazendo checagem multipla... e isso complica... c n tiver outro jeito, eu faco assim mesmo... mas c tiver um jeito de dar uma "paradinha" no script vai facilitar mto o trabalho...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja bem

function carregaHTML ( sURL ) {	var xmlhttp = xmlhttpInit();	if ( xmlhttp ) {		xmlhttp.open( "GET", sURL, true );		xmlhttp.onreadystatechange = function () {			if ( xmlhttp.readyState == 4 ) {			  minhaFuncao();			  ......			.....		  ....		...	  ..	.
Com o readyState == 4 você sabe quando o conteúdo foi carregado...

Basta agora você chamar uma função ou executar diretamente os comandos que você quer. É muito mais seguro assim. Nem todo mundo tem banda larga. Usar um tempo de espera pode não funcionar perfeitamente ;]

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, você n ta entendendo... o Ajax eh assincrono (trabalha num thread separado, e mesmo eu colocando o argumento assinc como false, no FF ele ta continuando assincrono)oq isso quer dizer?simples, ele trabalha numa linha de execucao diferente da pagina, entao eu n posso mandar o script esperar ele carregaro arquivo de template da minha janela soh eh carregado 1 vez, e n todas as vezes q a API deve ser chamada (isso economiza banda e deixa o sistema + rapido)assim q a pagina é carregada, o Ajax ja vai pegando o template da janela, isso ocorre de forma bem rapida, mas mesmo assim, c quizerem abrir a janela na inicializacao, e o template n tiver sido carregado (como eu disse, estao em threads diferentes, n da pra ter certeza se foi carregado ou n) a janela simplesmente n pode abrir, e tem q aguardar ateh q o template seja carregadooq eu to perguntando aki eh soh c tem algum jeito de dar um "pause", c n tiver, beleza, eu tenho outras maneiras de fazer (criar um array de espera e abrir qdo o template for carregado)entao eh soh isso, soh quero saber c tem um sleep ou n...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adorei sua aula de Ajax. Deu pra rever tudo que eu ja sabia.

Não existe sleep.

 

n da pra ter certeza se foi carregado ou n

if ( xmlhttp.readyState == 4 ) {...}

 

a janela simplesmente n pode abrir, e tem q aguardar ateh q o template seja carregado

var janelaLiberada = false;

....

......

.......

if ( xmlhttp.readyState == 4 ) { janelaLiberada = true; ...}

Na hora que chamar o evento de mostrar a janela, verifique se janelaLiberada é true. Se não for não executa nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

if ( xmlhttp.readyState == 4 ) { janelaLiberada = true; ...}Na hora que chamar o evento de mostrar a janela, verifique se janelaLiberada é true. Se não for não executa nada.

esse eh o problema, a janela tem q abrir, ela n pode simplesmente ser cancelada... mas td bem, ja fiz do jeito com array mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

de qualquer forma... se janelaLiberada == false então usa api default.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema eh q n existe default... o arquivo eh feito separadamente justamente pra facilitar a criacao do template, oq eu fiz foi o seguinte:

 

_windowWaitingList = [];Ajax.open("loader.php?pag=windowTemplate", "windowCatchTemplate");function windowCatchTemplate(v) {	_windowTemplate = v;		for(var i = 0; i < _windowWaitingList.length; i++) {		_windowWaitingList[i].show();	}}Window.prototype.show = function() {	if(!_windowTemplate) {		if(!_windowWaitingList.inArray(this)) {			_windowWaitingList[_windowWaitingList.length] = this;		}				return;	}		if(!this.initialized)		this.init();		this.element.style.visibility = 'visible';}

isso eh soh a parte do codigo q foi modificada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.