async function testAsync(v) { await new Promise(resolve => { setTimeout(resolve, 100); }); return v + 1; } const data = []; const params = [0, 1, 2]; params.forEach(async v => { const res = await testAsync(v); console.log(res); data.push(res); }); console.log(data); // [] 1 2 3 彼としてはawaitによって非同期処理の完了を待ち、結果をdata配列に挿入していき、最終的にdata配列が[1, 2, 3]となる想定だったようですが、実際には空配列になっています。 これを見て「うんそれはそうなるよね・・・」と思いはしたの