Calling função setTimeout dentro de um loop
Sou iniciante em javascript e estou tentando chamar uma função usando setTimeout de dentro de umpar loop. O loop é executado para cada membro de um nodeList.
Estou descobrindo que a função que estou chamando com setTimeout está na verdade executando apenas durante a última iteração do loop. No exemplo abaixo, eu gostaria de fazer três chamadas separadas para setTimeout, mas estou descobrindo que as duas primeiras são ignoradas.
function moveants(e, stepdistance) {
. . . . .
for(var i = 0; i < 3; i++)
{
var nextAnt = antgroup.childNodes[i]
nextAnt.count = 0;
nextAnt.member = i;
setTimeout(function () { takeStep(nextAnt, mouseclickX, mouseclickY, 10) }, 0);
}
}
function takeStep(ant, destX, destY, stepDistance) {
. . . .
. . . .
if( condition )
{
return;
}
else
{
takeStep(ant, destX, destY, stepDistance);
}
}
Eu tenho vistooutros posts que descrevem a realização de várias chamadas para setTimeout. Surpreendentemente (para mim), as várias chamadas funcionarão se eu simplesmente as retirar dapar loop assim.
setTimeout(function () { takeStep(antgroup.childNodes[0],
mouseclickX, mouseclickY, 10) }, 10);
setTimeout(function () { takeStep(antgroup.childNodes[1],
mouseclickX, mouseclickY, 10) }, 10);
setTimeout(function () { takeStep(antgroup.childNodes[2],
mouseclickX, mouseclickY, 10) }, 10);
Não consigo entender por que há uma diferença entre chamá-los de dentro de umpar loop e chamando-os fora de u
Estou obtendo valores de retorno válidos da chamada setInterval em todos os casos .. é apenas isso com apenas a última iteração dopar loop executa a função realmente executad
Agradecemos antecipadamente por qualquer ajuda