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

questionAnswers(2)

yourAnswerToTheQuestion