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: Fri, 21 Oct 2022 19:04:30 +0200 Lines: 42 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net 1Dp3wTNYv4ctbna6RlVgZwPHfX5UH6Sqf80pZu0VkxS/slt/3a Cancel-Lock: sha1:5+CknkSBXumAKolX7vvSvYoRVVY= 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:5335 Am 21.10.2022 um 14:59 schrieb Jan Novak: > function apicall(what, array, callback){ > ... >       window[callback](data); ... > apicall("getAllDatesTable",data,"meinCallback"); Sowas macht man besser nur in Ausnahmefällen, wenn man als callback nur einen String übergeben kann (das ist z.B. der Fall, wenn man ein Formular-Ergebnis als jsonp erhalten muss, oder mit einem WebWorker kommuniziert). Besser ist, die Funktion direkt zu übergeben: function apicall(what, array, callback) { ... callback(data); ... apicall("getAllDatesTable", data, meinCallback); Dann geht auch das... >     apicall("getAllDatesTable",fdata,"this.meinCallback"); ...relativ geradlinig: apicall("getAllDatesTable", fdata, this.meinCallback.bind(this)); oder, etwas ausführlicher /* aktuelles this festhalten, weil die anonyme Funktion ihr eigenes this sieht */ var me = this; /* als callback eine anonyme Funktion übergeben, die an meinCallback weiterleitet */ apicall("getAllDatesTable", fdata, function(data) { me.meinCallback(data); }); Stefan