相关疑难解决方法(0)

Javascript如何在迭代列表操作中使用setTimeout?

我想做这样的事情:

for(var i=0;i<aList.length;i++)
{
    aList[i].doSomething();
    sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

当然,javascript中没有睡眠功能所以我尝试了以下内容:

for(var i=0;i<aList.length;i++)
{
    setTimeout(function(){
        aList[i].doSomething();
    },500);  
}
Run Code Online (Sandbox Code Playgroud)

但是,现在它说没有定义aList [i].由于匿名函数是一个闭包,它实际上是从外部函数的范围读取aList [i],因此在运行setTimeout中的函数时,i已经发生了变化.

有什么方法可以实现这个目标?

javascript closures anonymous-function settimeout

0
推荐指数
1
解决办法
2347
查看次数