javascript callback 循环陷阱

2018-08-10  本文已影响157人  Mushroom94

callback函数的loop trap

通过循环发出多个异步执行指令(如ajax)的时候,很可能发生的一个情况是所有的callback在循环结束之后才被调用。如果callback函数中直接引用了循环的index,结果就是callback函数引用到的index是循环结束之后的index,而不是循环中即时的index。

代码举例

function(

for (i=1; i<100; i++)
    working(callback,i)       // error! 

为了解决这个问题,可以引入wrapper function,将index缓存到函数内部的作用域中

for (i=1;i<100;i++){
    (function(currentIndex){
        working(callback,currentIndex))
    })(i)
}

由于使用了匿名函数function(currentIndex),传入的currentIndex每次都会对应一个新的object,并在之后的执行过程中不会被修改。

上一篇 下一篇

猜你喜欢

热点阅读