• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Globale Variable

ev3rw00d_83

New member
Hallo,

ich beiße mir gerade die Zähne aus, vielleicht kann mir jemand helfen.
Ich habe mich auch schon tot-gesucht, werde aber nicht schlauer ...

Ich möchte mit JavaScript überprüfen, ob es auf GitHub eine neue Version von einem Projekt gibt.
Leider sind meine Variablen immer leer.

Egal an welcher stelle ich diese anlege, egal ob mit VAR, LET oder ohne Prefix.
Theoretisch sollten die Dinger doch, sofern ich die oben außerhalb jeglicher Funktionen und Klammern anlege, global sein.
Oder kann das ein Problem mit der Reihenfolge sein?

Code:
<script>

var local_version = "";
var online_version = "";

...

{

    var apiVerUrl = 'https://api.github.com/repos/MEIN-PROJEKT/tags';
    var verCheck = '';
   	  
    axios.get(host + "/rpc/DEVICE.GetInfo").then(function(res2) {
    var data = res2.data;
       local_version = data.version;
       })
      
    fetch(apiVerUrl, { timeout: 100, timeoutIncludesBody: true })
      .then(function(response){
        return response.json();
      })
      .then(function(data){
        online_version = (data[1].name); 
      })
      if (online_version == "") {
            verCheck = "1 - Not rechable. " + this.local_version +  " L / O " + online_version;
        } else if (local_version == online_version) {
            verCheck = "2 - Up to date. " + this.local_version +  " L / O " + online_version;
        } else {
            verCheck = "3 - New software. " + this.local_version +  " L / O " + online_version;
        }
      el('app_version_online').innerHTML = verCheck;
    
}

Innerhalb der AXIOS-Funktion sowie innerhalb der FETCH-Funktion ist alles richtig und ein ALERT gibt mir den richtigen Wert aus.
Aber später in meiner IF-Funktion sind beide Variablen (local_version & online_version) immer leer, bzw. haben den vorher definierten Wert "".

Wo ist da der Trick?

Für jeden Tipp wäre ich dankbar.

LG

Ev3rw00d
 
Spontane Idee: ist da die Reihenfolge gewahrt? Stichworte Asynchronität von Funktionen und callbacks?
Ganz unten das if scheint beim Drüberfliegen ziemlich unabhängig von den timeouts u. ä. zu stehen. Passt das im Debugging von der Reihenfolge alles?

https://riptutorial.com/de/javascript/example/11793/fortsetzung--synchron-und-asynchron-

https://m.heise.de/developer/artike...aScript-Programmierung-2752531.html?seite=all

https://alexandernaumov.de/artikel/javascript-promises-asynchrones-programmieren
 
Sowohl das axios.get als auch das fetch geben ein Promise zurück. Ich würde diese mit einem Promise.all() kombinieren, dann hast du dann in diesem Promise dann beide Ergebnisse verfügbar und kannst sie vergleichen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben