Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Variable in request-Aufruf

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Variable in request-Aufruf

    This topic has been deleted. Only users with topic management privileges can see it.
    • a200
      a200 last edited by a200

      hi,

      um Informationen von einer externen Seite abzurufen nutze ich den request. Die Aufrufe sind mehrmals verschachtelt, weil ich Informationen (z.B. ein Token) aus dem ersten Request in den zweiten einbauen muss.

      Das funktioniert und die Problematik der asynchronen Aufrufe ist mir auch bekannt. Aber jetzt brauch ich aber eine weitere Variable (hier z) aus der vorherigen Abfrage, an der ich in der zweiten nicht drankomme.

      url1 = "...";
      request(url1, function (error, response, body) {
        z = 1;
        url2 = "...";
        request(url2, function (error, response, body) {
        log(z);
        });
      });
      

      Wie kann ich das vernünftig lösen?

      1 Reply Last reply Reply Quote 0
      • blauholsten
        blauholsten Developer last edited by

        Wenn die variable z ausserhalb beider requests deklariert ist, kannst du von überall drauf zugreifen.

        a200 1 Reply Last reply Reply Quote 0
        • a200
          a200 @blauholsten last edited by

          @blauholsten sagte in Variable in request-Aufruf:

          Wenn die variable z ausserhalb beider requests deklariert ist, kannst du von überall drauf zugreifen.

          Ja, allerdings wird z aus dem ersten request ermittelt und soll verarbeitet werden.

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @a200 sagte in Variable in request-Aufruf:

            allerdings wird z aus dem ersten request ermittelt und soll verarbeitet werden.

            Wo ist das Problem ? Umgekehrt wäre es schwieriger. Bitte richtig deklarieren.

            const url1 = "...";
            var z;
            request(url1, function (error, response, body) {
              z = 1;
              var url2 = "...";
              request(url2, function (error, response, body) {
              log(z);
              });
            });
            
            1 Reply Last reply Reply Quote 0
            • a200
              a200 last edited by

              @paul53 sagte in Variable in request-Aufruf:

              const url1 = "...";

              var k;
              const url2 = "...";
              const url2 = "...";
              
              request(url1, function (error, response, body) {
              	for(k=0; k<2; k++) {
                  		request(url2, function (error, response, body) {
                  			log("k = " + k);
              		});
              	}
              });
              

              k=2
              Wie bekomme ich die in dem ersten Unter-Request k=0 und in dem zweiten Unter-Request k=0

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                request() in einer Schleife auszuführen, ist keine gute Idee. Wozu soll das dienen ?

                a200 1 Reply Last reply Reply Quote 0
                • a200
                  a200 @paul53 last edited by

                  @paul53

                  im vorherigen aufrufen ermittle ich die anzahl und urls, die ich aufrufen soll. Um alle Dateien (k) abzurufen wollte ich k requests laufen haben, die jeweils einen anderen Datenpunkt füllen.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @a200 last edited by

                    @a200 sagte in Variable in request-Aufruf:

                    Um alle Dateien (k) abzurufen wollte ich k requests laufen haben, die jeweils einen anderen Datenpunkt füllen.

                    Dann erstelle eine Funktion mit dem url2-request, die sich aus der Callback-Funktion solange selbst aufruft, bis die ermittelte Anzahl erreicht ist.

                    a200 1 Reply Last reply Reply Quote 0
                    • a200
                      a200 @paul53 last edited by

                      @paul53

                      aus dem body des request(url1) erhalte ich a) die Anzahl der Dateien und b) die jeweiligen urls der Dateien. Kannst du mir bitte template dafür erstellen?

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @a200 last edited by paul53

                        @a200 sagte in Variable in request-Aufruf:

                        und b) die jeweiligen urls der Dateien.

                        url2 ist also nicht konstant, sondern bei jedem neuen Aufruf anders ?
                        Dann versuche es etwa so:

                        const url1 = "...";
                        
                        var url2 = [];
                        var k, anzahl;
                        
                        function getData() {
                           request(url2[k], function (error, response, body) {
                              // body verarbeiten
                              k++;
                              if(k < anzahl) getData();
                           });
                        }
                        
                        request(url1, function (error, response, body) {
                           // anzahl ermitteln und Array url2 füllen 
                           k = 0;
                           getData();   
                        });
                        
                        a200 1 Reply Last reply Reply Quote 1
                        • a200
                          a200 @paul53 last edited by a200

                          @paul53 sagte in Variable in request-Aufruf:

                          @a200 sagte in Variable in request-Aufruf:

                          und b) die jeweiligen urls der Dateien.

                          url2 ist also nicht konstant, sondern bei jedem neuen Aufruf anders ?
                          Dann versuche es etwa so:

                          Super, Danke. Jetzt geht es.

                          Das Ergebnis kann hier: https://forum.iobroker.net/post/228883 gesehen werden.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          781
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          javascript
                          3
                          11
                          454
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo