前提・実現したいこと
javascriptで画像を読み込んだのち、その画像のwidthと元のデータを使用して処理を行い、すべてが終了した時点で他の処理を行いたいと思っています。
色々調べてはみたのですが、onloadで読み込んだ画像自体の情報と、その画像が何番目のデータのものなのかを共に扱うことがどうしてもできません。
該当のソースコード
javascript
1//dataに画像のurlやその他のデータが格納されています 2 3function test(data) { 4 var count = 0; 5 for (i = 0; i < data.length; i++) { 6 var image = new Image(); 7 image.src = data[i].ImageUrl; 8 image.onload = function () { 9 console.log(i+'番目のデータの画像の横幅は"+image.width); 10 ++count; 11 if (count == data.length) { 12 console.log('全て終了'); 13 } 14 } 15 16 } 17 } 18 19$.when(test()).done( 20//test終了後に処理 21)
結果として横幅は正しいものがとれるのですが、iの部分が例えばdataが10個あるとしたら全て11になってしまします。
非同期で処理してるために、一番最後のiが取得されているためだと思います。
かといってcountをとったとしても、それは読み込みが完了した順であってデータの順番ではなくなってしまいます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/13 05:16 編集
2019/02/13 05:18
2019/02/13 05:19