마지막 사진을 ipCamera에서 가져오고 싶습니다. 내 기능은 다음과 같습니다. 기본적으로 하나의 이미지로드 후에 루프를 즉시 시작하십시오. 나는 AJAX를 사용하지 않는 것을 선호한다.javascript Date.now() 계속 스택
var toggle= function(_imageUrl ) { //refresh include and adjust
var img = document.getElementById('image');
var updater = function(){
var time = Date.now();
var loop = function() {
ImageURL = _imageUrl + '&' + time;
console.log(time)
img.setAttribute("src", imageURL);
ImageURL = ''; //set the image.src to empty
img.addEventListener('load', function() {
setTimeout(updater ,100)
}, false);
};
loop();
}
updater();
};
이 함수는 정상적으로 작동하지만 분명히 Date.now()는로드 시간마다 계속 쌓입니다. 다음은 console.log (시간)의 결과입니다.
First Loop:
1417935798237
Second loop:
1417935798237
1417935798925
ThirdLoop (as it took longer to load), thus the time stack more
1417935798925
1417935800057
1417935800057
1417935801226
1417935801227
1417935801228
1417935801228
기능은 여전히 마지막 이미지를 제공 결국, 마지막 이미지를 렌더링하기 전에, 각 루프에 의해 더 많은 항목을 평가해야하지만, 20 루프에 의해. 목록이 무궁무진합니다
질문 :
1. 무슨 일이 있었습니까?
2. Date.now()를 마지막 타임 스탬프로 설정하는 방법은 무엇입니까? 각 루프에서 같은img
개체를 재사용하기 때문에
OP도 함수 선언으로 함수를 만든 다음 참조로 할당 할 수 있으며 * addEventListener *를 통해 할당 된 횟수에 관계없이 한 번만 추가해야합니다. 그러나 과제를 루프 외부에 두는 것이 좋습니다. ;-) – RobG
ImageUrl을 만들고 추가 다운로드를 방지하기 위해 src = ImageUrl 바로 뒤에 비워 두도록 설정합니다. – vdj4y
@ jfriend00 진심으로 사과드립니다. 내 console.log가 섞여 있기 때문에 혼란 스러웠지만, Alex의 대답은 정확합니다. – vdj4y