이미지가있는 이벤트 스트림이 실시간으로 표시되는 페이지가 있습니다. 실시간으로 (이벤트가 발생하면) 저장 장치에 이미지가 아직 업로드되지 않아 이미지를 사용할 수 없습니다. 새로운 이벤트를 얻을 수JQuery 지연 대기 + 대기 호출
통화 초에 한 번씩 실행하고 있으며, 각각의 호출은 (20 개) 이벤트 (최신 20)까지 반환 할 수 있지만, 보통은 잠재적으로 0과 5
인해 이미지의 문제에있어
<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 번까지 다시 시도 : 처음에로드되지, onerror
사용하는 기능입니다.
불행히도 실제로는 (실제로 다수의 이미지가 처음에 동시에로드되지 않는 경우) 표시되는 이미지 중 하나가 다른 이벤트에 속합니다. 어느 날 내가 delay()
과 queue()
기능을 오용하고 있다고 생각하게합니까?
의견이 있으십니까?
가 해결되지 않았다 그러나 : 같은 시도 잘못된 이미지 로딩의 전반적인 문제 그 문제는 'img'변수가 로컬이 아닌 전역으로 선언 되었기 때문에 발생했습니다 (즉, 'var img = new Image()') ... 바보 같은 감시! – user3282203