Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript Reihenfolge

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Skript Reihenfolge

    Hallo Forumer
    Ich verwende in einer App einfache Javaskripte um Meine Seiten zu aktualisieren. Dabei passiert es, dass die reihenfolge der skripte nicht eingehalten wird.
    In einer liste offener rechnungen lasse ich durch einen klick auf den eintrag 2 skripte ausführen.
    1 skript setzt ein flag
    2 skript aktualisiert den Bildschirm
    aus irrgend einem mir unerklärlichen grund werden die 2 Skripte nicht immer in der richtigen Reihenfolge ausgeführt. Kennt jemand das Problem oder kann mir jemand sagen wie ich das verhindern kann.
    Besten Dank für eure Hilfe.

    Mein Aufruf:
    PHP-Code:
    <tr class="bg-warning" onclick="work('16482', '1', 'content/rechnungen/mahnungen/mut/save_mahnung.php'),
    showHint('1', 'Mahnung', 'content', 'content/rechnungen/mahnungen/mahnung_tab.php')"
    style="cursor:pointer"><th scope="row">2</th><td>1808166779 (164821)</td><td>01.10.2018</td><td></td><td>478.75</td><td>0</td></tr


  • #2
    JavaScript wartet (im Gegensatz zu PHP) nicht bis eine Anweisung fertig ausgeführt ist sondern führt einfach aus. Das bedeutet bei Dir, dass die beiden Funktionen quasi gleichzeitig ausgeführt werden und es dann wohl Zufall ist welche zuerst fertig ist.

    Wenn du das steuern willst brauchst du Promise => https://developer.mozilla.org/de/doc...bjects/Promise

    Kommentar


    • #3
      Besten Dank für deine Antwort.
      Werde mir das Projekt Promise anschauen.

      Gruss und einen schönen Rest des Wochenends

      Kommentar


      • #4
        Zitat von jonas3344 Beitrag anzeigen
        JavaScript wartet (im Gegensatz zu PHP) nicht bis eine Anweisung fertig ausgeführt ist sondern führt einfach aus.
        Aha...bitte lies Dir das nochmal durch und stelle das richtig - synchron und asynchron als Hinweis. Promises sind schon OK, Callbacks auch.

        Kommentar


        • #5
          Du darfst das gerne versuchen so zu formulieren, dass es absolut korrekt ist und der TE es versteht. Meine ist sicher nicht 100-ig korrekt, ein asynchroner Request dürfte aber die Ursache für das Problem sein und das hab ich versucht einigermassen verständlich darzulegen.

          Kommentar


          • #6
            ich habe keinen Bock auf solche Diskussionen, #2 is an den Haaren herbeigezogener Unsinn.

            Kommentar


            • #7
              Dann lass es doch einfach.

              Kommentar


              • #8
                Mal vom technischen abgesehen,

                Code:
                work(content/rechnungen/mahnungen/mut/save_mahnung.php)
                show_hint(content/rechnungen/mahnungen/mahnung_tab.php')
                für mich sieht das so aus, als sei das irgendwie ein ding ....

                welches sich serverseitig abfackeln lässt

                Kommentar


                • #9
                  Er hat aber zwischen den Funktionsaufrufen ein Komma, daher sollten die getrennt sein.
                  Ob das im onclick so funktioniert, weiß ich adhoc zwar nicht, aber wenn man die mit Semikola trennt, funktioniert das i.d.R. und da läuft nichts asynchron.

                  Ich würde zwar einen Click-EventHandler empfehlen, aber im onclick ist es auch so möglich.
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Zitat von Arne Drews Beitrag anzeigen
                    Er hat aber zwischen den Funktionsaufrufen ein Komma, daher sollten die getrennt sein.
                    Ob das im onclick so funktioniert, weiß ich adhoc zwar nicht, aber wenn man die mit Semikola trennt, funktioniert das i.d.R. und da läuft nichts asynchron.
                    Ich schätze mal, dass die aufgerufenen Funktionen selber asynchronen Code beinhalten. Man müsste also erstmal warten, bis die erste Funktion beendet ist, bevor man die zweite Funktion aufruft.

                    Beispiel ohne Warten:
                    Code:
                    const function1 = () => {
                        setTimeout(() => {
                            console.log('Erster!');
                        }, 2000);
                    };
                    
                    const function2 = () => {
                        setTimeout(() => {
                            console.log('Zweiter!');
                        }, 1000);
                    };
                    
                    function1();
                    function2();
                    Ausgabe:
                    Zweiter!
                    Erster!
                    Beispiel mit Warten:
                    Code:
                    const function1 = () => new Promise((resolve) => {
                        setTimeout(() => {
                            console.log('Erster!');
                            resolve();
                        }, 2000);
                    });
                    
                    const function2 = () => new Promise((resolve) => {
                        setTimeout(() => {
                            console.log('Zweiter!');
                            resolve();
                        }, 1000);
                    });
                    
                    function1().then(function2);
                    Ausgabe:
                    Erster!
                    Zweiter!
                    Davon abgesehen hat JavaScript-Code in HTML-Code eh nichts verloren. Das sollte alles in JavaScript-Dateien ausgelagert werden.

                    Kommentar


                    • #11
                      Zitat von hellbringer
                      Ich schätze mal, dass die aufgerufenen Funktionen selber asynchronen Code beinhalten.
                      Das ist gut möglich, aber da wir die Funktionen nicht kennen, kann ich darauf nicht eingehen.
                      Ich wollte nur richtig stellen, dass bezogen auf das Snippet aus #1 diese Aussage nicht zutrifft:
                      Zitat von jonas3344 Beitrag anzeigen
                      JavaScript wartet (im Gegensatz zu PHP) nicht bis eine Anweisung fertig ausgeführt ist sondern führt einfach aus. Das bedeutet bei Dir, dass die beiden Funktionen quasi gleichzeitig ausgeführt werden und es dann wohl Zufall ist welche zuerst fertig ist.
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Ich ging wie hellbringer davon aus, dass da asynchroner Code drin ist, was man vielleicht nicht hundertprozentig wissen kann aber anhand der Beschreibung der Funktionalität (und der Fehlerbeschreibung) erahnen kann.

                        Kommentar


                        • #13
                          Mag sein, dass Du davon ausgingst, das ist ja auch ok, aber die Aussage:
                          Das bedeutet bei Dir, dass die beiden Funktionen quasi gleichzeitig ausgeführt werden
                          bezieht sich für einen nicht so erfahrenen auf die beiden Funktionen im onclick und damit wäre die Aussage falsch.
                          Das wollte ich auch nur erwähnen, um den TE nicht zu verwirren in der Hinsicht.
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar

                          Lädt...
                          X