setInterval не работает при использовании в функции - PullRequest
0 голосов
/ 17 июня 2019

Я пишу программу JS для записи носителей и вывода результатов каждые несколько секунд.Я использую setInterval для вызова MediaRecorder.requestData () каждые несколько секунд, но это никогда не вызывается.

Я добавил выходные данные отладки console.log в функцию интервала, но они не выводятся, потому что интервал не выполняетсяnamed.

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 - это функция, которая будет обрабатывать большой двоичный объект и записывать его в консоль.

Я ожидаю, что вызов interval () будет происходить каждый раз30 секунд.В консоли нет сообщений об ошибках, но кажется, что interval () никогда не вызывается и что sendData () вызывается только тогда, когда запись вручную останавливается в браузере.

1 Ответ

1 голос
/ 17 июня 2019

Я исправил это, изменив имя функции интервального обратного вызова на intervalCallback из-за конфликта с именем переменной.Спасибо @Musa за совет.

...