Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.javascript > #4933

Re: Wo ist der Unterschied

From Jan Novak <repcom@gmail.com>
Newsgroups de.comp.lang.javascript
Subject Re: Wo ist der Unterschied
Date 2018-03-12 10:37 +0100
Organization albasani.net
Message-ID <p85hoi$d15$1@news.albasani.net> (permalink)
References <p7u0ns$4q4$1@news.albasani.net> <p7u2ph$c2n$1@solani.org> <p7u6k7$erh$1@solani.org> <p7u8r8$frt$1@news.albasani.net> <p7unvj.mo.1@stefan.msgid.phost.de>

Show all headers | View raw


Am 09.03.2018 um 19:40 schrieb Stefan Reuther:
> Am 09.03.2018 um 16:22 schrieb Jan Novak:
>> Am 09.03.2018 um 15:44 schrieb Christoph M. Becker:
>>>>>       function getDbTree() {
>>>>>           $.getJSON('fetch.php', function(data) {
>>>>>               console.dir( data );
>>>>>               var dataz=JSON.stringify(data);
>>>>>               console.log( dataz );
>>>>>               return (dataz);
>>>>>           });
>>>>>       }
>>>>>       $('#tree').treeview({data: getDbTree()});
>>>>> </script>
> [...]
>>> Warum initialisierst du die Treeview nicht direkt im success callback,
>>> also etwa:
>>>
>>>     $.getJSON('fetch.php', function(data) {
>>>         $('#tree').treeview({data: data});
>>>     });
>>
>> So funktioniert es. Ich bin echt erstaunt.
>> Kannst du mir aber bitte erklären, warum es auf diese Wiese funktioniert
>> und auf die andere nicht?
> 
> (a) Die Daten, die du willst, kommen im Parameter 'data' an. Also musst
> du den Parameter 'data' auch irgendwie in '.treeview()' hineinfüllen.
> Deine 'getDbTree' loggt den aber nur, konvertiert sie in einen String
> 'dataz' und liefert den zurück. Die Daten sind also hinterher weg.
> 
> (b) Ernsthaftes JavaScript arbeitet asynchron[*], d.h. die Funktion
> 'getJSON' kehrt sofort zurück, der Rückgabewert kann gar nicht die Daten
> enthalten. Der Callback 'function(data)...' wird irgendwann später
> aufgerufen, wenn dein "Hauptprogramm" lange beendet ist, und sein
> Rückgabewert (der String) ist wiederum egal.
> 
>       [*] man kann auch synchron Daten laden. Sollte man aber nicht.

Das erklärt einiges. Ich bin wohl noch zu sehr im "on error goto 1000" 
Modus ;-)
Letztendlich macht es die Sache (für mich) aber nicht einfacher. Ich 
habe das Buch "thinking in Java" gelesen (wenigstens teilweise) und 
dachte mir noch ... was "in java denken"? Jetzt weiss ich, was der 
Author damit meinte. Ich denke das gilt auch für Javascript.

Jan

Back to de.comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-09 14:03 +0100
  Re: Wo ist der Unterschied "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-03-09 14:39 +0100
    Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-09 14:45 +0100
      Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-09 15:03 +0100
    Re: Wo ist der Unterschied "Christoph M. Becker" <cmbecker69@arcor.de> - 2018-03-09 15:44 +0100
      Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-09 16:22 +0100
        Re: Wo ist der Unterschied Stefan Reuther <stefan.news@arcor.de> - 2018-03-09 19:40 +0100
          Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-12 10:37 +0100
            Re: Wo ist der Unterschied Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-03-12 14:14 +0100
              Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-13 07:44 +0100
                Re: Wo ist der Unterschied Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-03-13 19:46 +0100
                Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-14 08:00 +0100
                Re: Wo ist der Unterschied Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-03-14 13:58 +0100
                Re: Wo ist der Unterschied Jan Novak <repcom@gmail.com> - 2018-03-14 15:50 +0100
                Re: Wo ist der Unterschied Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2018-03-14 16:51 +0100

csiph-web