Auch ein Pete: Wie Timeout Argumente übergeben?

Hallo,

Kurze Frage:

Wie kann ich einer über Timeout aufgerufenen Funktion Parameter übergeben?

let sagHallo = (arg) => {
	console.log(`Hallo ${arg}`);
}

setTimeout(sagHallo.bind("Welt"), 1000);

erzeugt bei mir Hallo undefined :(

Danke für eure Hilfe, Pete!

  1. Hallo Pete,

    kurze Antwort.

    Rolf

    --
    sumpsi - posui - obstruxi
  2. Hallo

    sieh mal in unserem Wiki nach:

    https://wiki.selfhtml.org/wiki/JavaScript/Window/setTimeout

    Gruß
    Jürgen

  3. Hallo Pete,

    mit bind erzeugst Du eine neue Funktion, die den an bind übergebenen Wert als this zur Verfügung gestellt bekommt. Man kann an bind noch mehr Parameter übergeben, diese werden dann an die ersten Parameter der gebundenen Funktion übergeben. Du könntest also bind mit zwei Argumenten aufrufen:

    setTimeout(sagHallo.bind(window, "Welt"), 1000)

    Das würde das globale Objekt window als this und "Welt" für den arg Parameter bereitstellen.

    Unser Wiki stellt eine ziemlich abstrakte Erläuterung von bind zur Verfügung - ich glaube, da muss ich mal 'ran. Aber falls es Dich interessiert: hier.

    Aber bind ist hier zu umständlich. Einfacher ist die Nutzung der Zusatzparameter von setTimeout:

    setTimeout(sagHallo, 1000, "Welt");

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Stimmt, in Hinblick auf die Dokumentation im Wiki war meine Frage eigentlich unnötig.

      Werde in Zukunft wohl zuerst dort vorbeischauen, bevor ich hier klug poste.

      Trotzdem danke für eure Hilfe!

  4. Lieber Pete,

    setTimeout(sagHallo.bind("Welt"), 1000);

    setTimeout(
      () => {
        sagHallo("Welt");
      },
      1000
    );
    

    Liebe Grüße

    Felix Riesterer