Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Stefan Reuther Newsgroups: de.comp.lang.javascript Subject: Re: js classe soll funktion mit callback aufrufen Date: Wed, 26 Oct 2022 19:22:21 +0200 Lines: 35 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net ZQyHj2c8kD+QvAvWZ40OkwmN/MlKUuJDxBz76YNNdlr9WQNCVO Cancel-Lock: sha1:alQJeYJM7UT4VGlsCFFIROTzj/U= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 Hamster/2.1.0.1538 In-Reply-To: Xref: csiph.com de.comp.lang.javascript:5340 Am 26.10.2022 um 10:03 schrieb Jan Novak: > Am 21.10.22 um 19:04 schrieb Stefan Reuther: >> Dann geht auch das... >> >>>      apicall("getAllDatesTable",fdata,"this.meinCallback"); >> >> ...relativ geradlinig: >> >>        apicall("getAllDatesTable", fdata, this.meinCallback.bind(this)); >> > > Danke, das funktioniert. > Wenn ich das richtig verstehe, übergebe ich die Funktion als Callback, > welche innerhalb der Funktion im apicall ausgeführt wird. Das heisst, er > springt gar nicht zurück, um die Funktion auszuführen, sondern bekommt > den gesamten Inhalt der Funktion als Parameter mit? Das "zurückspringen" ist in beiden Varianten gleich: `$.ajax()`, und damit `apicall()`, kehrt sofort zurück, speichert aber die Funktion zwischen. Eine Funktion ist auch nur ein Objekt. Es benimmt sich etwas anders als andere Objekte - man kann es mit () aufrufen - aber das war's dann auch schon. Genauso wie du Strings, (Referenzen auf) Arrays, Hashes, DOM-Objekte usw. in Variablen speichern kannst, kannst du Funktionen in Variablen speichern. Du benutzt die `done`-Funktion und übergibst ihr eine anonyme Funktion. Das ist genau das gleiche. `function(raw) {...` legt ein solches Funktionsobjekt an, speichert es aber nicht erst unter einem Namen ab, sondern gibt es direkt an `done` - genau wie `console.log(1+2)` das Ergebnis der Addition nicht erst abspeichert, sondern direkt übergibt. Stefan