【问题标题】:Loop over setTimeout in javascript [duplicate]在javascript中循环setTimeout [重复]
【发布时间】:2013-09-15 15:26:48
【问题描述】:

我无法“持续刷新”每 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);
    }

【问题讨论】:

    标签: javascript settimeout setinterval


    【解决方案1】:

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

    intervalRef = setInterval(reflashIPCam, 1000);
    

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

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

    获取摄像头数据,请看access-from-the-browser-to-camera

    【讨论】:

    • 谢谢!只需对您的代码稍作修改,我的工作就非常好!感谢您的帮助
    【解决方案2】:

    当你写作时

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

    您在 delayFunction 执行后 1000 毫秒内编写了对 reflashIPCam 函数的调用。

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

    你可以这样修复它:

    function playIPCamLoop(){
        for (var i=0;i<5;i++){
            delayFunction(i+1);
        }
    }
    
    function delayFunction(i){
        setTimeout(reflashIPCam, i*1000);
    }
    

    【讨论】:

    • 嗨dystroy,我刚试过你的代码,问题仍然存在。它只显示最后一张拍摄的照片。图片与启动时相同
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2016-08-30
    • 2019-10-21
    • 2010-12-19
    • 2014-05-18
    相关资源
    最近更新 更多