@wolfgangfb sagte in Influx Datensatz in Funktion lesen:
Heißt das, dass Methode 1 auf jeden Fall auch abgearbeitet wird, aber manchmal eben zum Zeitpunkt der Ausgabe noch nicht fertig ist?
Dann fällt mir noch auf, dass "await"rot unterkringelt ist (Fehler), das ganze aber funktioniert. Warum wird await markiert? Als Hinweis bekomme ich:
Naja logisch, auf die erste Ausführung wartest Du ja auch nicht (mit await). Ich kann hier jetzt keine JavaScript-Grundlagen erklären. Stichworte für Google für dich sind Promise, then/catch resolve/reject, await/async, try/catch.
Ich habe Dir zwei verschiedene Varianten aufgezeigt. Einmal mit then und einmal mit await. Es kommt auf den Context an, in welchem Du dich bewegst. await kannst Du nur in asynchronen Funktionen verwenden.
Methode1 wird asynchron ausgeführt. Ob alles danach schneller oder langsamer ist, ist reiner Zufall. Daher wäre für dich wahrscheinlich await besser (falls eine async function drumrum ist).
var Methode2 = [];
for (var i = 0; i < DP.length; i++) {
try {
Methode2.push(await readInflux(DP[i], 5));
} catch (err) {
console.log(err);
}
}
Da das bei dir aber nicht der Fall sein wird (steht da ja -> await nicht auf top level), kannst Du auch eine anonyme Funktion definieren, welche sofort ausgeführt wird:
(async () => {
var Methode2 = [];
for (var i = 0; i < DP.length; i++) {
try {
Methode2.push(await readInflux(DP[i], 5));
} catch (err) {
console.log(err);
}
}
})();
Da man das meiste aber eh innerhalb von Triggern machen wird, kann man die Callbacks einfach asynchron definieren. z.B.
schedule('0 0 * * *', async () => {
var Methode2 = [];
for (var i = 0; i < DP.length; i++) {
try {
Methode2.push(await readInflux(DP[i], 5));
} catch (err) {
console.log(err);
}
}
});