美文网首页
javascript callback 循环陷阱

javascript callback 循环陷阱

作者: Mushroom94 | 来源:发表于2018-08-10 17:35 被阅读157次

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,并在之后的执行过程中不会被修改。

相关文章

网友评论

      本文标题:javascript callback 循环陷阱

      本文链接:https://www.haomeiwen.com/subject/jyjlbftx.html