Ir para conteúdo

POWERED BY:

Arquivado

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

Márcio Vitor De Matos

setTimeout enxergar variável local

Recommended Posts

Olá a todos, estou com um problema no desenvolvimento de uma função que deve ser disparada a todo instante:

var new_id;

function list_spider(id) {

new_id = id; //setTimeout só enxerga variável global

Jemplate.process('list_spider.tt2',

'[% Catalyst.uri_for("/rest/spider/") %]'+id,

'#spider_'+id);

if(i==50){

clearTimeout(t);

}

i++;

var t = setTimeout("list_spider(new_id)",5000);

}

 

O meu problema é com a chamada da função setTimeout que não 'enxerga' como parâmetro a variável local 'id' que está no escopo da função list_spider, logo não disparava a função corretamente, para contornar este problema o que eu fiz foi criar uma variável global 'new_id' e passar esta variável pelo setTimeout, ai tudo bem funciona, porém esta solução é ineficiente porque quando a função é disparada mais de uma vez, ou seja por dois id's, ela só funciona com o último id clicado.

Alguém já passou por problema similar ou tem alguma dica para me dar ?

 

Agradeço a todos desde já :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, você pode usar uma função anônima para contornar este problema, olha:

 

function list_spider(id) {
	Jemplate.process('list_spider.tt2',
	'[% Catalyst.uri_for("/rest/spider/") %]'+id,
	'#spider_'+id);
	if(i==50){
		clearTimeout(t);
	}
i++;
var t = setTimeout(function(){
		list_spider(id)
	},5000);
}

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado klaygomes, jogada esperta esta da função anômina. Valeu!

 

Márcio, você pode usar uma função anônima para contornar este problema, olha:

 

function list_spider(id) {
	Jemplate.process('list_spider.tt2',
	'[% Catalyst.uri_for("/rest/spider/") %]'+id,
	'#spider_'+id);
	if(i==50){
		clearTimeout(t);
	}
i++;
var t = setTimeout(function(){
		list_spider(id)
	},5000);
}

Abraços,

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.