我想從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(time)的結果;
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()只設置爲最後一個時間戳?
該OP也可以創建函數作爲函數聲明,然後通過引用進行分配,無論通過addEventListener *分配多少次,它都應該只添加一次。但把這個任務放在循環之外更好。 ;-) – RobG 2014-12-07 07:40:11
我創建ImageUrl,並將其設置爲在src = ImageUrl之後立即清空,以防止進一步下載。 – vdj4y 2014-12-07 07:55:48
@ jfriend00我真誠地道歉,我很困惑,因爲我的console.log是混合的,但下面Alex的答案是正確的。 – vdj4y 2014-12-07 08:30:01