私は、画像付きのイベントストリームがリアルタイムで表示されるページを持っています。リアルタイムで(イベントが発生したとき)、まだ画像がストレージにアップロードされているため、まだ利用可能ではない可能性があります。新しいイベントを取得するためのJQueryが遅延+待ち行列に入れられたコール
コールは秒おきに実行され、各呼び出しは20件のイベント(最新の20)まで戻ることができますが、通常は潜在的に0〜5
により画像の問題のためです最初にロードしていない、onerror
機能を使用する:
<img onerror="retryImage(this, 'imageUrl', 0)" src="imageUrl" />
function retryImage(source, url, attempts) {
img = new Image();
img.src = url + '?' + (new Date()).getTime();
img.onload = function() {
source.src = img.src;
};
img.onerror = function() {
if (attempts > 4) {
source.src = 'not_found.png';
} else {
source.src = 'loading.gif';
attempts++;
$(this).delay(2000).queue(function() {
retryImage(source, url, attempts);
$(this).dequeue();
});
}
};
return true;
}
アイデアは、画像をロードしようとすることであり、それが失敗した場合、数秒待ってから5回まで、再試行してください。
残念ながら、実際には(実際には多数の画像が同時に最初に読み込まれない場合)、表示される画像の1つは異なるイベントに属します。私はdelay()
とqueue()
の機能を悪用していると思うのですか?
どのような考えですか?
それが解決しませんでしたが:のようなものを試してみてください間違った画像読み込みの全体的な問題。その問題は、ローカルではなくグローバルに 'img'変数が宣言されたためです(つまり、 'var img = new Image()')...愚かな見落とし! – user3282203