JavaScript dvale/vente før du fortsetter

Jeg har en JavaScript-kode som jeg trenger å legge til en dvale-/ventefunksjon i. Koden jeg kjører er allerede i en funksjon, f.eks:

function myFunction(time)
{
    alert('time starts now');
    //code to make the program wait before continuing
    alert('time is up')
}

Jeg har hørt at en mulig løsning kan omfatte

setTimeout

men jeg er ikke sikker på hvordan det skal brukes i dette tilfellet.

Jeg kan ikke bruke PHP, siden serveren min ikke støtter det, selv om det ville være greit å bruke jQuery.

Løsning

JS har ikke en dvalefunksjon, den har setTimeout() eller setInterval() funksjoner.

Hvis du kan flytte koden du trenger å kjøre etter pausen til setTimeout() callback, kan du gjøre noe sånt som dette:

//code before the pause
setTimeout(function(){
    //do what you need here
}, 2000);

se eksempel her: http://jsfiddle.net/9LZQp/

Dette vil ikke stoppe utførelsen av skriptet ditt, men så lenge setTimeout() er en asynkron funksjon, vil denne koden

console.log("HELLO");
setTimeout(function(){
    console.log("THIS IS");
}, 2000);
console.log("DOG");

vil skrive ut dette i konsollen:

HELLO
DOG
THIS IS

(legg merke til at DOG skrives ut før THIS IS)


Du kan bruke følgende kode for å simulere søvn i korte perioder:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

nå, hvis du vil sove i 1 sekund, bare bruk:

sleep(1000);

eksempel: http://jsfiddle.net/HrJku/1/

Vær oppmerksom på at denne koden vil holde skriptet opptatt i n millisekunder. Dette vil ikke bare stoppe kjøringen av Javascript på siden din, men avhengig av nettleserimplementeringen kan det føre til at siden ikke svarer, og muligens at hele nettleseren ikke svarer. Dette er med andre ord nesten alltid feil å gjøre.

Kommentarer (16)