Ich programmiere ein Partikel Photon (wie ein Arduino). Ich versuche, eine Variable von ihm aufzurufen und dann diese Variable zu verwenden, um einem Div eine CSS-Klasse hinzuzufügen.Probleme bei der Verwendung von Versprechen in jQuery/JavaScript. Script scheint nicht zu warten
Das Problem ist, dass der Variable auf dem ersten Aufruf zurück als
undefined
kommt immer. Allerdings, wenn ich es ein paar Sekunden später noch einmal anrufe, funktioniert es gut.
Dies ist der API-Aufruf von Particle:
particle.getVariable({ deviceId: 'DEVICE_ID', name: 'temp', auth: token }).then(function(data) {
console.log('Device variable retrieved successfully:', data);
}, function(err) {
console.log('An error occurred while getting attrs:', err);
});
Hier ist meine Version davon ist:
function getVariable(varName) {
particle.getVariable({ deviceId: device_ID, name: varName, auth: accessToken }).then(function(data) {
return data.body.result;
}, function(err) {
console.log('An error occurred while getting variable:', err);
});
}
Ich möchte in der Lage sein, mit diesem wie
$(".class").addClass(getVariable("var")
zu arbeiten
Ich bin ziemlich neu in jQuery und Javascript, aber ich habe eine Menge gelesen auf Rückrufe und Versprechungen und nirgendwohin. Irgendeine Idee, wie man das erreicht?
Oh mein Gott. Ich danke dir sehr! Ich habe mit Variationen Ihres ersten Codeabschnitts gespielt, aber nie daran gedacht, ein Versprechen für den zweiten Abschnitt zu verwenden. Pfui. Gibt es eine Möglichkeit, es mit etwas wie '$ (". Class ") überhaupt funktionieren zu lassen. AddClass (getVariable (" var ")'? Ihre Lösung funktioniert, aber nur in der Hoffnung, zu vereinfachen help. – syndac
@syndac - Nein, das Ergebnis ist async. Sie können das Ergebnis nicht direkt aus 'getVariable()' zurückgeben. – jfriend00
Kein Problem. Nochmals vielen Dank für die Hilfe! – syndac