Recently I find a strange issue with JavaScript's requestAnimationFrame(callback) method. This is my code:
var callback = undefined;
for (var i = 0; i < 3; i++) {
var flag = 0;
callback = (function (index) {
return function () {
if (flag < 5) {
flag++;
console.log('K i=' + index + ' flag=' + flag);
window.requestAnimationFrame(callback);
}
}
})(i);
window.requestAnimationFrame(callback);
}
In my expected, there should loop as following in console:
K i=0 flag=1
K i=0 flag=2
K i=0 flag=3
K i=0 flag=4
K i=0 flag=5
K i=1 flag=1
K i=1 flag=2
K i=1 flag=3
K i=1 flag=4
K i=1 flag=5
K i=2 flag=1
K i=2 flag=2
K i=2 flag=3
K i=2 flag=4
K i=2 flag=5
But in fact, the console log as these:
K i=0 flag=1
K i=1 flag=2
K i=2 flag=3
K i=2 flag=4
K i=2 flag=5
What should I do to get my expected result using for loop and requestAnimationFrame()?