JS的for迴圈包裹非同步函式的問題

2022-07-25 05:33:08 字數 637 閱讀 1413

有個迴圈,迴圈乙個非同步**,為啥**引用的迴圈值都是最後一步迴圈的迴圈值?然後,又有些時候無論什麼迴圈值都得不到?

1

var arr = [1,3,5,7,9];

2var arrlength =arr.length;34

for (var i = 0; i < arrlength; i++) , 2000);

9 }

結果是:

5undefined

5undefined

5undefined

5undefined

5undefined

解決方法:使用自執行函式傳參

1

var arr = [1,3,5,7,9];

2var arrlength =arr.length;34

for (var i = 0; i < arrlength; i++) , 2000);

10})(i);

11 }

結果是:

i是0

value是1

i是1value是3

i是2value是5

i是3value是7

i是4value是9

js 迴圈中的非同步

for var i 0 i 5 i 0 1 2 3 4 加入延時 for var i 0 i 5 i 1000 i 5 立即執行 5 一秒後 5 一秒後 5 一秒後 5 一秒後var output function i 1000 i for var i 0 i 5 i 0 立即執行 1 一秒後 2 ...

遞迴函式的包裹函式

對於遞迴函式,必須有乙個控制遞迴的引數,在引數滿足某個特定條件的情況下,遞迴停止。對於私有的遞迴函式。對於使用者來說,他不需要知道這個引數,只要傳入初始值就可以,對應於公有的包裹函式 舉例 在求二叉樹的高度的時候,使用者只要傳入二叉樹的根節點。然而,在遞迴的時候,引數是每個子樹的根節點,當根節點為空...

js非同步函式佇列

場景 做直播,會有入場訊息,入場特效,使用者如果有坐騎,需要給他展示幾秒鐘的坐騎特效,如果幾個人同時進場,那該怎麼展示呢?這時候就會想到settimeout函式,對,思路不錯,但是,非同步函式佇列怎麼實現呢?直接上 var queue function queue.prototype wait fu...