Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript http request mit delay

    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

    Javascript http request mit delay

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

      Hallo zusammen,
      ich stehe gerade etwas auf dem Schlauch. Existiert bei Javascript keine einfache delay Funktion wie z.B. "sleep: 10"?

      Ich möchte mehrere URLs mit einer Verzögerung aufrufen und bekomme es nicht gebacken. Hier sollte zwischen den requests ein delay rein.

      Danke für eure Hilfe

      on({id:"javascript.0.States.DoorPi"/*States.DoorPi*/,val: true}, function (obj) {
              if (obj.newState.val === true) {
              setState("sayit.1.tts.text", "de;100;" + 'http://192.168.179.60:8082/state/sayit.1.tts.mp3');    
      request("http://192.168.179.54:9000/anyurl?p0=mixer&p1=volume&p2=20").on('error', function  (e) {  log(e, 'error');});
      request("http://192.168.179.54:9000/anyurl?p0=mixer&p1=volume&p2=100").on('error', function  (e) {  log(e, 'error');});
      }
      });
      1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active last edited by

        Nein, ein delay oder sleep gibt es nicht (glaub ich zumindest).

        Musst mit timeout arbeiten.

        on({id:"javascript.0.States.DoorPi"/*States.DoorPi*/,val: true}, function (obj) {
                if (obj.newState.val === true) {
                      setTimeout(function() {
                         tue etwas nach 2 Sek.
                      }, 2000);
                      setTimeout(function() {
                         tue etwas nach 4 Sek.
                      }, 4000);
                      setTimeout(function() {
                         tue etwas nach 6 Sek.
                      }, 6000);
                }
        });
        
        
        H 1 Reply Last reply Reply Quote 1
        • T
          ticaki Developer last edited by ticaki

          Das entspricht zwar nicht dem Geist des Erfinders oder Philosophie, jedoch kann man ein sleep() so lösen:

          // Codeausschnitte
          const getDetailsOfLight = async function (id, setId=null, value=0) {
              const prefix = '1-##**25';
              if (setId) {
                  setState(setId, getState(setId).val + value)
                  await sleep(20); // warte auf das Schreiben des Datenpunkts
              }
              ...
          }
          
          async function sleep (ms) {
              return new Promise( resolve => {setTimeout(()=>{ resolve();},ms);});
          }
          

          Alle Funktion bis zum sleep müssen mit async definiert und mit await aufgerufen werden, wenn du kein asynchrones Verhalten wünschst.

          bahnuhr 1 Reply Last reply Reply Quote 0
          • H
            Hansi1234 @bahnuhr last edited by

            @bahnuhr
            Vielen Dank, klappt soweit 🙂

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @ticaki last edited by

              @ticaki sagte in Javascript http request mit delay:

              async

              Ja, damit hab ich mich auch schon mal abgekämpft.

              War mir aber irgendwie zu kompliziert.
              So richtig verstanden hab ich dieses async und promise (noch) nicht.

              mfg

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

              Support us

              ioBroker
              Community Adapters
              Donate

              870
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              javascript
              3
              5
              573
              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