NEWS
Javascript http request mit delay
-
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');}); } }); -
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); } }); -
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.
-
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); } });@bahnuhr
Vielen Dank, klappt soweit :-) -
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.
@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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden