it-swarm.com.de

So warten Sie nach dem Ausführen einer Funktion eine gewisse Zeit

Wenn ich eine Funktion habe, mit der mein js-Code sofort ausgeführt werden soll, aber nach dem Lauf, warten Sie 2 Sekunden. Wie erreicht man diese Logik?

( Hinweis: Es ist nur die inverse Logik mit setTimeout() zu vergleichen, da setTimeout() erst eine gewisse Zeit warten, dann die Funktion ausführen.)

24
Mellon

Fügen Sie Ihren Code einfach in eine anonyme Funktion ein, die an setTimeout übergeben wird.

z.B.

functionToRunFirst();
setTimeout(function() {
    // rest of code here
}, 2000);
40
GregL

Ich denke, Sie suchen nach einer Methode, um die Ausführung des Codes bis zu einem Timeout auszusetzen. Viele Amateurprogrammierer wünschen sich ein solches Konstrukt, aber es gibt es nicht in JavaScript. Es ist nicht nötig. Für alle Zwecke in JavaScript sind setTimeout und setInterval perfekte Kandidatenlösungen.

JavaScript ist jedoch eine mächtige Sprache. Sie können Ihr eigenes Konstrukt erstellen, um dieses Problem zu beheben. Schauen Sie sich Neil Mix's Blogpost an. Mit diesem Ansatz können Sie eine Schlaffunktion erstellen, die auf folgende Weise verwendet werden kann (beachten Sie, dass derzeit nur Firefox JavaScript 1.7 unterstützt):

function mainGeneratorFunction() {
    functionToRunFirst();
    yield sleep(2000);
    //rest of the code
}

Für andere Browser jedoch nicht verzweifeln. Sie können einen Hack namens XHR Sleeping verwenden. Bei diesem Ansatz verwenden Sie einfach eine synchrone XMLHttpRequest, um ein serverseitiges Skript wie php aufzurufen, das dann für die angegebene Zeit inaktiv ist und nach dem Aufwachen zurückkehrt. Der JavaScript-Code lautet wie folgt:

function sleep(microseconds) {
    var request = new XMLHttpRequest();
    request.open("GET", "sleep.php?time=" + microseconds, false);
    request.send();
}

functionToRunFirst();
sleep(2000000);
//rest of the code

Die PHP-Schlaffunktion ist wie folgt:

<?php
    usleep($_GET["time"]);
?>
6
Aadit M Shah

setTimeout ist eine Möglichkeit, dies zu tun

function run() {    
    // run this code

    setTimeout(afterTwoSeconds, 2000);    
}

function afterTwoSeconds() {    
    // run this code two seconds after executing run.   
}

// call run
run();
3
Russ Cam

wenn Sie etwas ausfüllen, sollte dies 5 mal mit einem halben Sekunden-Timer laufen

var counter = 0;
var arrayOfPicture = []; //fill this out

function gifSimulator() {

    //use the counter as an index in the array, and change the image source of your element with that.


    if (counter < 5) {

        setTimeout(function () {

            counter++;

            gifSimlulator();

        }, 500); //lets wait half a second
    }
}
1
NachoDawg

was bedeutet "2 Sekunden warten"? meinen Sie, Sie möchten einen Rücksprung von der Funktion für 2 Sekunden blockieren?

wenn ja, kannst du das nicht tun. Es gibt keine sleep () - Funktion in JavaScript.

sie müssen nur setTimeout () verwenden.

1
Kae Verens

Nichts ist falsch mit den Antworten oben, aber ein anderer Weg ist:

$("#somethingThatDoesntExist").fadeTo(2000, 1, function() {
    // two seconds later
});
1
Grim...

Ich weiß nicht, warum ihr Jungs so viel macht. Ich glaube, wir können das Date-Objekt verwenden. Nehmen Sie zuerst den Datumswert und verwenden Sie die setInterval-Funktion, um zu warten, bis wir das angegebene Intervall erhalten (erhalten Sie ein neues Datum und prüfen Sie die Differenz). Sobald wir das bekommen haben, setzen Sie die Intervall-Funktion zurück und fahren mit Ihrem Code fort, nachdem er ausgeführt werden kann.

0
Siva