javascript callback 循环陷阱

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,341评论 0 3
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,918评论 0 38
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,202评论 0 1
  • 不知不觉已经更新两周了,对我而言,真的是一个很大的改变,我对写文章其实也没特别的感觉,就是喜欢用文字表达自己学到的...
    茹道食堂阅读 226评论 0 0
  • 其实我并不知道喜欢一个人是什么感觉,只是他们说喜欢一个人就会想他,想他就会笑,会为他坚持不可能坚持的事。他的一句话...
    Healer_459阅读 183评论 0 0