画像読み込みライブラリを使用せずに、以下のように画像を読み込んで処理しています。
ImageGenerator(){
for(int i=0;i<100;i++){
ImageProcess( data-i , i );
}
}
ImageProcess( String data , int i ){
final Image img = new Image(data);
img.setVisible(false);
RootPanel.get().add(img);
GWT.log( "image " + i );
img.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
GWT.log( "onload " + i + " " + img.getWidth() );
ImageElement data = ImageElement.as(img.getElement());
RootPanel.get().remove(img);
obj.setData(data);
..obj processing
}
});
}
結果 :
image 1;
image 2;
image 3;
..
image 98;
image 99; <-- finish for loop
onload 1; <-- start loading image
onload 2;
onload 3;
..
onload 98;
onload 99;
しかし、私はそれが次のように見えることを願っています:
image 1; <-- generate image and load image step by step
onload 1;
image 2;
onload 2;
image 3;
onload 3;
..
image 98;
onload 98;
image 99;
onload 99;
img.src に値を割り当てた後、画像がすぐに利用できないことがわかっています。最初にロードする必要があります。img 要素は、画像の読み込みが完了するとすぐに onload イベントを発生させます。タイマーを追加して、画像を別のDOM要素に配置しようとしています。うまくいきません。
私の質問は、画像要素をトリガーしてすぐにロードする方法は? または ImageProcess を onload が終了するまで待機させますか?