Ir para conteúdo

POWERED BY:

Arquivado

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

diegoholiveira

loop e função não sincronizam

Recommended Posts

Galera, beleza?

 

Ow, eu não manjo muito de javascript, então posso estar enganado quanto ao erro, mas é o seguinte, eu tenho este pedaço de codigo:

 

for (i = 0; i < settings.data.locations.length; i++) {		var point = geocoder.getLatLng(settings.data.locations[i].endereco, function(point){			map.addOverlay(createMarker(point, i));		});	}

e o que rola?

 

o loop executa as duas vezes sem problemas, só que nesta linha:

map.addOverlay(createMarker(point, i));
o i sempre tem o valor final que o i assume apos o fim do loop, por exemplo, se o loop rola duas vezes, o deveria ser passado pra essa função com o valor 0 e 1, mas ao inves disso nas duas interações do loop o unico valor passado é 2.

 

alias, uma coisa extremamente anormal é que se fizermos isso:

 

for (i = 0; i < settings.data.locations.length; i++) {		alert(i);		var point = geocoder.getLatLng(settings.data.locations[i].endereco, function(point){			alert(i);			map.addOverlay(createMarker(point, i));		});	}
acontece o seguinte, aparecem duas caixas alert com os valores 0 e 1, como deveria ser, e logo apos essas duas alerts aparecem mais duas alerts, ambas com o valor 2. resumindo, rolou 4 alerts em um loop que deveria gerar apenas 2.

 

como disse, não manjo muito de javascript, então se alguem puder me ajudar, agradeço.

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, eu vi o topico lá, mas a diferença é que lá vocês estão interagindo com html, e no meu caso os dados estão vindo direto do javascript, e tambem não entendi nada disso:

 

var $A = Array.from = function(iterable) {	if (!iterable) return [];		if (iterable.toArray) {		return iterable.toArray();	} else {		var results = [];				for (var i = 0; i < iterable.length; i++)			results.push(iterable[i]);				return results;	}};Function.prototype.bind = function() {	var __method = this, args = $A(arguments), object = args.shift();	return function() {		return __method.apply(object, args.concat($A(arguments)));	};};

mas o ponto é, como fazer esse bind em jquery e/ou, não existe solução mais simples?

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.