美文网首页
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