W jaki sposób zatrzymać wykonywanie się skryptu w pętli?

0

Hej,
Dostałem zadanie do wykonania w którym muszę co określony czas pobierać widok z innych stron. Nie wiem jak ugryźć funkcję, która powoduje zatrzymanie się pętli. Może Wy zrozumiecie patrząc na kod:

<script type="text/javascript">

//function sleep(milliseconds) {
//  var start = new Date().getTime();
//  for (var i = 0; i < 1e7; i++ ) {
//     if ((new Date().getTime() - start) > milliseconds {
//    break;
//     }
//   }
// }
function test()
{
  var x = ["adres", "adres","adres","adres"];
  var i = 0;

   do
   {
      document.getElementById("ramka").src = x[i];
      i++;
      if (i == 3)
          i=0;

          //sleep(60000);
       }while(i < 4);
}

Albo nic się nie dzieje, albo strona się crashuje.. HEELP
Ps. Sorka za burdel u góry, piszę z komórki

0

Zamiast robić własnego sleepa użyj setTimeout albo setInterval, do wywoływania swojego kodu co określony czas:

https://www.w3schools.com/js/js_timing.asp

0

Napisałeś nieskończoną pętle.

if (i == 3)
          i=0;

To powoduje, ze ustawiasz i na 0 za kazdym razem gdy i jest rowne 3, a w warunku kończacym petle masz żeby powtarzac dopoki i jest mniejsze od 4, a ta sytuacja występuje w nieskończoność.

0

Doczytałem i wnioskuję, że chodzi Ci o coś takiego:

var interval = setInterval(twojaFunkcja, coJakiCzasMaBycOdpalanaTwojaFunkcja);
setTimeout(function() {
    clearInterval(interval)
}, czasPoJakimMaPrzestacWywolywacTwojaFunkcje);
0

Tak chyba najprościej:

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function test() {
  let i = 0
  
  while (true) {
    await delay(1000)
    
    console.log(i) // your code here
    
    i = (i + 1) % 3
  }
}

test()

CodePen: https://codepen.io/caderek/pen/bLOyMK?editors=0012

1 użytkowników online, w tym zalogowanych: 0, gości: 1