###for文で動的なimportをループさせたとき、全ての成功を成功を待つには。
タイトル通りです。
私は以下のようにしてループ内で動的なimportを行おうとしています。
js
1.then(()=>{ 2 for (let item of hoge_list) { 3 import(`../${item}.png`)//変数に応じて動的に取得 4 .then((response) => { 5 //成功したときの動作。 6 }) 7 } 8}.then(response=>{ 9 console.log(response) 10})
しかしこれでは全てのimportの成功を待つことはできないのではないかと思いました。
なのでPromise.allを利用しようとしました。
それぞれのimportを無名変数としてリストにpushし、それをreturnするやりかたです。
js
1.then(()=>{ 2 var f_list = [];//functonのリスト 3 for (let item of hoge_list) { 4 let a = ()=>{ 5 import(`../${item}.png`)//変数に応じて動的に取得 6 .then((response) => { 7 //成功したときの動作。 8 }) 9 }; 10 f_list.push(a) 11 } 12 return Promise.all(f_list); 13}).then(response=>{ 14 console.log(response) 15}) 16
ですがこの結果を見てみると[ƒ, ƒ]
というように関数のリストが格納されているだけで、//成功したときの動作。
が行われていないことが確認できました。
これはなぜでしょうか?
どうすれば、for文で動的なimportをループさせたとき、全ての成功を待つことはできるのでしょうか?
回答2件
あなたの回答
tips
プレビュー