Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Mehrere Abfragen auf einmal abfragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    911

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Mehrere Abfragen auf einmal abfragen

Geplant Angeheftet Gesperrt Verschoben JavaScript
1 Beiträge 1 Kommentatoren 83 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von Ben1983
    #1

    Hallo, ich habe folgende Abfrage, die auch einwandfrei funktioniert.

    for(const device in this.devices){
    	if(this.devices[device].historicValues){
    		for(const value in this.devices[device].historicValues){
    			for(const type in this.devices[device].historicValues[value].type){
    				for(const timeBase of Object.values(this.timeBases)){
    					myUrl = `http://${this.config.address}:${this.config.port}/rest/1/projects/${this.config.projectname}/devices/${device}/hist/energy/`;
    					myUrl += `${value}/`;
    					myUrl += `${type}/.json?start=${timeBase.startstring}&end=${timeBase.endstring}`;
    					this.log.silly(`${myUrl} was send to gridVis`);
    					
    					const result = await axios.get(myUrl,{timeout: this.config.timeout});
    					this.log.silly(`result.data: ${JSON.stringify(result.data)}`);
    					if(result.status === 200){		// OK => write data into internal state
    						if((result.data.energy || result.data.energy === 0)){ // check present or equal 0 (a value must be present => also value == 0)
    							if(!isNaN(result.data.energy)){ // check not equal to NaN
    								this.setStateAsync(`${this.internalIds.devices}.${device}.${this.internalIds.historicValues}.${value}.${type}_${timeBase.namestring}`,result.data.energy,true);
    							}
    							else{
    								this.setStateAsync(`${this.internalIds.devices}.${device}.${this.internalIds.historicValues}.${value}.${type}_${timeBase.namestring}`,{q:1, c:"GridVis sends value NaN"},true);
    								this.log.info(`${device}.${value}.${type} is NaN  --  (${this.devices[device].deviceName})`);
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    }
    

    Ichdurchlaufe also die Elemente und rufe immer einen Wert bei einem API ab, warte auf das Ergebnis und dann kommt der nächste Wert dran.

    Könnte ich das auch mit

    await Promise.all
    

    irgendwie so hin bekommen, dass ich alle Anfragen starten kann und dann, wenn alle fertig sind darauf reagieren kann?
    Dann könnte ich aber nicht nur1 result anlegen, sondern müsste mehrere anlegen, oder?
    Es müssten auch die einzelnen werte der Schleifen gespeichert werden, oder?

    Wäre es mit einem

    .then()
    

    einfacher zu realisieren und wären dann nicht auch im .then() teil die Variablen der in der Schleifen enthaltenen Variablen noch da?

    ich glaube mit

    .then
    

    sollte es gehen, wenn nötig. oder?

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    776

    Online

    32.6k

    Benutzer

    82.2k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe