[JavaScript] Método somente é invocado com alert()
12 respostas
P
porto0503
Pessoal estou com o seguinte problema!
tenho um método em um laço de repetição e preciso que ele seja invocado mais em cada passagem do indice.
O problema é que ele para na primeira posição do indice. Apenas se eu coloco o alert() ele força a chamada! Estou tentando entender isso!
alguem poderia me AJUDAR por favor? desde já OBRIGADO.
Esse erro não faz muito sentido… Aparentemente está tudo certo…
Tente colocar um console.log(); para colocar os valores dos objetos no console e ver se ele está passando certo…
P
porto0503
creio que seja algo relacionado a timeOut e apenas quando dou um alert() o método é invocado.
Tentei solucionar usando um setInterval() ou setTimeout(), porem com o setInterval() já da o efeito de ficar invocando o método infinitamente, mesmo usando o clearInterval() após invocar a segunda vez!
realmente verifiquei nos logs do console do firebug e eles não apresentam nenhum erro para mim.
O que eu preciso é executar a chamada de um script dentro de um FOR, porem ele só executava na primeira posição a não ser que eu chamasse um alert dentro do FOR,
Imaginei que pudesse ser algo relacionado a timeOut, por isso só chamava a função uma única vez.
Sendo assim o que eu tentei fazer foi usar o setInterval() para que ele forçe a chamada do metodo em um range de milisegundos.
Funcionou porem ele fica chamando inúmeras vezes mesmo o FOR sendo limitado a 3 posições.
O setTimeout não vai impedir o seu for de ser executado, ou seja, quando ele fizer o timeOut, ele não vai parar o seu for… Assim, o seu for faz 3 voltas mas o timeOut é executado uma única vez.
Por que que você precisa desse timeOut?
P
porto0503
estou usando pq da forma como implementei abaixo ele só chama a função apenas umas vez, mesmo passando 3 vezes pelo FOR,
var params = [];
for(var i = 1; i < 3; i++) {
params.catEntryId = entitledItemJSON[i].catentry_id; //object JSON...
params.quantity = quantity;
wc.service.invoke("AddOrderItem", params);
}
[b]ou seja:
i = 1 (executa a função wc.service.invoke(“AddOrderItem”, params))
i = 2 (não executa a função)
porem se eu coloco um alert(); ele chama invoca/chama a função[/b]
Rafael_Guerreiro
Isso é um ajax? wc.service.invoke(“AddOrderItem”, params);
P
porto0503
me parece que sim cara, porem não tenho acesso a ele!
esse esta sendo meu problema =/
preciso tentar resolver isso de alguma forma
Rafael_Guerreiro
Mas é uma péssima prática você fazer um timeout, pois se a conexão for mais lenta que o timeout, o timeout vai passar e o problema vai continuar.
Verifique se essa chamada não tem um callback. Faça assim no console do chrome:
P
porto0503
parece que não temos nada cara, dê só uma olhada!
Rafael_Guerreiro
Eu não consegui ver esse log… Como que você fez isso?
P
porto0503
Fala cara, pô valeu man,
consegui resolver passando uma function diretamente em uma váriavel e dando um setInterval() logo abaixo dela:
Deixo aqui a solução para caso alguem passe pelo mesmo problema!
Obrigado.