小编Mic*_*ips的帖子

在循环中调用setTimeout函数

我是javascript的新手,我试图在for循环中使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我看过其他帖子描述了多次调用setTimeout.令人惊讶的是(对我来说),如果我简单地将它们从这样的for循环中取出,那么多个调用将会起作用.

    setTimeout(function () { takeStep(antgroup.childNodes[0], …
Run Code Online (Sandbox Code Playgroud)

javascript for-loop settimeout

3
推荐指数
1
解决办法
3612
查看次数

标签 统计

for-loop ×1

javascript ×1

settimeout ×1