Frage

Wenn setTimeout verwenden, müssen Sie den Code, den Sie in einen String ausführen möchten setzen:

setTimeout('alert("foobar!");', 1000);

Allerdings möchte ich eine Funktion auszuführen, zu dem ich einen Verweis in einer Variablen haben. Ich möchte in der Lage sein, dies zu tun:

var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);

(Obwohl im wirklichen Leben, die Warnung ist ein längeres Stück Code und myGreatFunction wird als Parameter an anderen Funktionen übergeben um, innerhalb denen die setTimeout genannt wird.)

Natürlich, wenn das Timeout auslöst, myGreatFunction ist nicht eine anerkannte Funktion, so dass es nicht ausgeführt.

Ich wünsche Javascript lassen Sie mich dies tun, aber es funktioniert nicht:

setTimeout(function() { myGreatFunction(); }, 1000);

Gibt es eine schöne Möglichkeit, runden das?

War es hilfreich?

Lösung

Wenn Sie nicht myGreatFunction aufrufen müssen mit allen möglichen Argumenten, sollten Sie in der Lage sein, eine Funktion Verweis übergeben setTimeout:

setTimeout(myGreatFunction, 1000);

Außerdem sollten Sie immer vermeiden setTimeout Code vorbei, die sie bewerten muss (das ist, was passiert, wenn Sie den Code in Anführungszeichen wickeln). Stattdessen wickeln Sie den Code in einer anonymen Funktion:

setTimeout(function() {
    // Code here...
}, 1000);

Sehen Sie die SetTimeout Seite im Mozilla Development Center für weitere Informationen .

Steve

Andere Tipps

Wer hat gesagt, dass es nicht lassen Sie es tun?

Es tut der Code -

setTimeout(function() { myFunction(); }, 1000);

ist vollkommen gültig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top