Thank you for writing this great article on closures. The practical examples are easy to understand.
I wonder how, in the last example of the for loop, could you refactor the example so that each index prints out after the setTimeout value has elapsed
Like this:
0 (...1000ms have passed)
1 (...1000ms have passed)
2 (...1000ms have passed)
3 (...1000ms have passed)
4 (...1000ms have passed)
5 (loop exits)
They print all at once because all setTimeout starts at same time and for all setTimeout 1 second passes at same time. What you want can be achieved by passing timeout values to 1000, 2000, 3000....
Hi Phillip,
Thank you for writing this great article on closures. The practical examples are easy to understand.
I wonder how, in the last example of the for loop, could you refactor the example so that each index prints out after the setTimeout value has elapsed
Like this:
0 (...1000ms have passed)
1 (...1000ms have passed)
2 (...1000ms have passed)
3 (...1000ms have passed)
4 (...1000ms have passed)
5 (loop exits)
Sure just made an edit!
I see that you made the edit!
But that is not actually what happens when you run the code.
The code you wrote prints 0-4 (all indexes) after 2000ms all at once.
I was curious how to make a loop that prints out each index, one at a time, according to the setTimeout value.
Maybe this isn't possible using a for loop.
I hope that makes sense!!
They print all at once because all setTimeout starts at same time and for all setTimeout 1 second passes at same time. What you want can be achieved by passing timeout values to 1000, 2000, 3000....
Following code will give you that output: