Ihr function conn (text)
ruft Daten mithilfe von Rückrufen ab, Sie müssen dieses Muster bis zum verbrauchenden Code übertragen. Ich bin mir nicht sicher, was die „andere Funktionen“ aussehen, aber wir so tun, als man sieht wie folgt aus:
function awesomeFunction() {
var sweetResult = conn('sweet nickname');
alert(sweetResult);
}
conn
wird eine Abfrage an Ihre DB verbinden und auszustellen. Sie tun nicht wollen alles andere stoppen und warten auf das Ergebnis zurückkommen, möchten Sie die DB-Bibliothek, um Sie aufzurufen, wenn es Ergebnisse hat, daher die Rückrufe. Da die Datenbank nicht alles stoppt, kehrt die Steuerung zu Ihrer conn
-Funktion und dann zurück zu awesomeFunction
zurück und geht zur nächsten Zeile alert(sweetResult)
über. Aber warte! Sie haben nichts von conn zurückgegeben, aber noch wichtiger, die Datenbank hat noch nicht einmal mit Ergebnissen zurückgerufen!
So müssen Sie awesomeFunction
mehr wie folgt aussehen:
function awesomeFunction() {
conn('sweet nickname', function(err, sweetResult) {
alert(sweetResult);
});
}
Was bedeutet, conn
Bedürfnisse akzeptieren und einen Rückruf verwenden zu:
function conn (text, resultsAreInCB){
...
connection.query(queryString, function(err, rows, fields) {
var id;
connection.end();
if (err){
resultsAreInCB(err, null);
} else {
for (var i in rows) {
id = rows[i].idUsuario;
}
callback(null, id);
}
});
...
};
Sie nicht das tun kann. Sie müssen überall Callbacks oder Versprechen verwenden. http://blog.slaks.net/2015-01-04/async-method-patterns/ – SLaks
ich benutze calbacks in der Funktion getID, aber vielleicht mache ich etwas falsch mit diesen Callbacks –
Sie müssen den Wert von Ihrer Funktion zurückgeben einen Rückruf auch verwenden. – SLaks