Я новичок в javascript и пытаюсь вызвать функцию, используя setTimeout из цикла для . Цикл выполняется для каждого члена nodeList.
Я обнаружил, что функция, которую я вызываю с помощью setTimeout, фактически выполняется только во время последней итерации цикла. В приведенном ниже примере я хотел бы сделать три отдельных вызова setTimeout, но обнаружил, что первые два вызова игнорируются.
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);
}
}
Я видел других сообщений , в которых описывается несколько вызовов setTimeout. Удивительно (для меня), множественные вызовы будут работать, если я просто выну их из цикла для следующим образом.
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);
Я просто не могу понять, почему существует разница между вызовом их из цикла для и вызовом их вне одного цикла.
Я получаю действительные возвращаемые значения от вызова setInterval в каждом случае ... просто, только с последней итерацией цикла для функция действительно выполняется.
Заранее спасибо за любую помощь.