Я хотел бы выполнить этот цикл (песню), а затем подождать 10 минут, прежде чем он повторится.

for (i = 0; i < 3; i++) { 

var audio =    document.createElement("");

audio.src = "my_sound.mp3";
audio.play();

};

Было бы здорово, если бы кто-то мог мне помочь.

0
spiderpig97 7 Янв 2017 в 19:43

5 ответов

Лучший ответ

Это легко можно сделать так:

function play () {
  for (i = 0; i < 3; i++) { 

  var audio =    document.createElement("audio");

  audio.src = "my_sound.mp3";
  audio.play();

  };
}



setInterval(play, 600000);  
//the function name.  do not put () after it as you aren't executing it.  
//600000 is the number of milliseconds in 10 minutes.

play(); //this will execute it immediately the first time if you want.

setInterval

1
baao 7 Янв 2017 в 16:51

Вы можете использовать setTimeout() или setInterval() , но вы не можете рассчитывать на то, что это будет ровно 10 минут, потому что функция будет поставлена в очередь в цикле обработки событий и сработает только после того, как истечет время ее ожидания и время выполнения JavaScript будет бездействующим.

setTimeout() принимает функцию обратного вызова в качестве первого аргумента и число (в миллисекундах) для ожидания в качестве второго. Думайте о числе как о «минимальном количестве времени ожидания», пока не будет вызвана функция тайм-аута.

function go(){
  // Clear the previous timer
  timer = null;

  for (i = 0; i < 3; i++) {     
    var audio =    document.createElement("audio");  
    audio.src = "my_sound.mp3";
    audio.play();
  }

  // Re-run the timer
  timer = setTimeout(go, 600000);
}

var timer = setTimeout(go, 600000);

Или с setInterval():

var timer = setInterval(function(){
  for (i = 0; i < 3; i++) {     
    var audio =    document.createElement("audio");  
    audio.src = "my_sound.mp3";
    audio.play();
  } 
}, 600000);
0
Scott Marcus 7 Янв 2017 в 16:55

Создайте функцию, которая вызывает себя после истечения времени ожидания, и вызовите ее один раз

function createAudioElement() {
    for (i = 0; i < 3; i++) { 

        var audio = document.createElement("audio");  
        audio.src = "my_sound.mp3";
        audio.play();
  };

  setTimeout(createAudioElement, 600000);
}

createAudioElement();

Обязательно укажите, какой элемент создать в document.createElement() - в этом случае audio, иначе он выдаст ошибку.

0
baao 7 Янв 2017 в 16:47

Попробуйте использовать это:

setInterval(function() {
    for (i = 0; i < 3; i++) { 

      var audio = document.createElement("audio");

      audio.src = "my_sound.mp3";
      audio.play();
    } 
}, 600 * 1000);
1
baao 7 Янв 2017 в 16:51

Вы хотите использовать setInterval () или setTimeout

http://www.w3schools.com/jsref/met_win_setinterval.asp

Первый выполняется каждый раз X, второй выполняется после истечения X времени, от того, какой из них использовать, зависит от того, насколько бесконечен ваш цикл, или от того, хотите ли вы когда-нибудь выйти из него, для которого вы можете оценить в setTimeout перед выполнением или использованием clearInterval () для другого.

0
LordNeo 7 Янв 2017 в 16:46