Async.series wird gesagt, die Funktion der Reihe nach ausgeführt werden, aber es funktioniert nicht für mich,Wie genau führt async.series seine Funktionen aus?
Mein Code:
var mysql=require('mysql');
var async=require('async');
var con;
var EID=30;
var res;
async.series([
function(callback) {
console.log("inside first func");
con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'imd2'
});
callback();
},
function(callback) {
console.log("inside second function");
var sql = "select EName from users where EID=" + EID;
con.query(sql, function(err, rows) {
console.log("inside query");
res = rows;
});
callback();
}
],
function(err) {
console.log("third function");
if (err)
return next(err);
console.log(res);
});
console.log("hi");
und meine Ausgabe
inside first func
inside second function
third function
undefined
hi
inside query
ist, wenn ich die zweite ändern Funktionsrückruf innerhalb der con.query() Dann ändert sich der Ausgang zu
inside first func
inside second function
hi
inside query
third function
[ RowDataPacket { EName: 'AndhraPradesh' } ]
Meine erwartete Ausgabe ist
inside first func
inside second function
inside query
third function
[ RowDataPacket { EName: 'AndhraPradesh' } ]
hi
korrigiert mich wenn ich falsch bin, aber die Funktion (err) sollte im letzten genannt werden, und dann „hallo“ sollte richtig angezeigt werden? (Von den Definitionen) Was soll ich tun, um meine erwartete Ausgabe zu erhalten?
PS „hallo“ ist nur ein Debug, wird es sehr wichtig, Codes nach async.series durchgeführt werden, und es wird nicht am besten passen in eine neue Funktion innerhalb async.series Dank
console.log ("hi"); ist außerhalb async.series Aufruf, mit async-Serie verwalten Sie die Reihenfolge der internen, wenn Sie Reihenfolge in den folgenden Funktionen fordern müssen Sie diese in async.series –
Ok, Sie ignorierten die PS enthalten. part, Die Sache ist, console.log ("hi") wird durch eine Reihe von Funktionen und Anweisungen ersetzt, die standardmäßig synchron sind und keine zusätzliche Änderung benötigen, wenn ich alle Funktionen innerhalb von async nur für die zweite Funktion integrieren muss Ich glaube, das wird ein schlechtes Qualitätsprogramm sein. Der Kern dieser Frage ist die sectond-Funktion. Ich glaube, es könnte eine andere Problemumgehung geben, wenn man die mysql-Abfragesyntax synchron macht. –