ループとコールバックの問題(varとletで結果が変わる)
非同期処理を実行するfor文で使うindexの宣言をvarでするかletでするかで、するかだけで結果が変わる。
こんなの難しすぎる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
const main_idxVar = () => { var ps = []; for (var i = 0; i < 5; i++) { ps.push(new Promise(resolve => { setTimeout(() => { resolve(i); }, 0); })); } Promise.all(ps).then(values => { console.log(values); }); }; const main_idxLet = () => { var ps = []; var len = 5; for (let i = 0; i < 5; i++) { ps.push(new Promise(resolve => { setTimeout(() => { resolve(i); }, 0); })); } Promise.all(ps).then(values => { console.log(values); }); }; main_idxVar(); main_idxLet(); |
1 2 |
[ 5, 5, 5, 5, 5 ] [ 0, 1, 2, 3, 4 ] |