在javascript中循环遍历setTimeout

时间:2013-09-11 14:30:14

标签: javascript settimeout setinterval

我有一个问题是“不断刷新”每隔1秒从相机中捕获的照片。现在,图片只会变为相机拍摄的最后一张照片。 任何想法如何使这项工作????

    function reflashIPCam(){
        newImage = new Image();
        newImage.src = "image taken from the camera" + new Date().getTime();
        document.getElementById("IPCamIMG").src = newImage.src;
    }

    function playIPCamLoop(){
        for (var i=0;i<5;i++){
            delayFunction();
        }
    }

    function delayFunction(){
        setTimeout(reflashIPCam, 1000);
    }

2 个答案:

答案 0 :(得分:1)

为了完成计时,我认为最简单的重复方法是使用setInterval

intervalRef = setInterval(reflashIPCam, 1000);

如果你想在5秒后停止它:

setTimeout("clearInterval(intervalRef)", 5000);

要从相机获取数据,请参阅access-from-the-browser-to-camera

答案 1 :(得分:0)

写作时

delayFunction() {
     setTimeout(reflashIPCam, 1000);
}

您从执行reflashIPCam开始编程delayFunction函数调用1000毫秒。

由于循环是瞬时的,这意味着您同时编程所有呼叫。所以当然你只能看到最后一次执行。

你可以这样解决:

function playIPCamLoop(){
    for (var i=0;i<5;i++){
        delayFunction(i+1);
    }
}

function delayFunction(i){
    setTimeout(reflashIPCam, i*1000);
}