javascript callback 循環(huán)陷阱

callback函數(shù)的loop trap

通過循環(huán)發(fā)出多個異步執(zhí)行指令(如ajax)的時候,很可能發(fā)生的一個情況是所有的callback在循環(huán)結(jié)束之后才被調(diào)用。如果callback函數(shù)中直接引用了循環(huán)的index,結(jié)果就是callback函數(shù)引用到的index是循環(huán)結(jié)束之后的index,而不是循環(huán)中即時的index。

代碼舉例

function(

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

為了解決這個問題,可以引入wrapper function,將index緩存到函數(shù)內(nèi)部的作用域中

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

由于使用了匿名函數(shù)function(currentIndex),傳入的currentIndex每次都會對應一個新的object,并在之后的執(zhí)行過程中不會被修改。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,884評論 0 3
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評論 0 38
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,280評論 0 1
  • 不知不覺已經(jīng)更新兩周了,對我而言,真的是一個很大的改變,我對寫文章其實也沒特別的感覺,就是喜歡用文字表達自己學到的...
    茹道食堂閱讀 243評論 0 0
  • 其實我并不知道喜歡一個人是什么感覺,只是他們說喜歡一個人就會想他,想他就會笑,會為他堅持不可能堅持的事。他的一句話...
    Healer_459閱讀 202評論 0 0

友情鏈接更多精彩內(nèi)容