在函数中使用setInterval时不起作用

时间:2019-06-17 19:10:23

标签: javascript setinterval

我正在编写一个JS程序来记录媒体并每隔几秒钟输出一次结果。我使用setInterval每隔几秒钟调用一次MediaRecorder.requestData(),但这从未被调用。

我已将console.log调试输出添加到interval函数,但是由于未调用interval,因此未输出。

function interval() {
    mediaRecorder.requestData();
}
function stream() {
    if (navigator.mediaDevices) {
        var constraints = {audio : true, video : true};
        navigator.mediaDevices.getUserMedia(constraints)
        .then(function(stream) {
            mediaRecorder = new MediaRecorder(stream);
            mediaRecorder.start();
            mediaRecorder.ondataavailable = sendData;
        });
        interval = window.setInterval(interval, 30000);
    }
}

mediaRecorder是一个全局变量,sendData是一个函数,它将处理blob并将其记录到控制台。

我希望对interval()的调用每30秒发生一次。控制台中没有错误消息,但是似乎永远不会调用interval(),而仅当在浏览器中手动停止记录时才调用sendData()。

1 个答案:

答案 0 :(得分:1)

我通过将间隔回调函数的名称更改为intervalCallback来解决该问题,因为它与变量名称存在冲突。感谢@Musa的建议。