Ob Code unmittelbar dasteht oder in einer Funktion steckt und nur an der Stelle aufgerufen wird, bleibt sich gleich. Lediglich die Scopes für verwendete Variablen müssen beachtet werden.
Das stimmt (leider) so nicht ganz, wie ein einfacher Test beweist:
Das Script hier:
for (i=1;i<=5 ;i++ ) {
console.log(i+". Durchlauf");
pool.getConnection()
.then(function(conn){
connection = conn;
var result = connection.query('select feldtyp from werte where idnr = ?', param1);
return result;
}).then(function(rows){
console.log(i+". Durchlauf");
console.log("1. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param2);
return result;
}).then(function(rows){
console.log("2. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param3);
return result;
}).then(function(rows){
console.log("3. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param4);
return result;
}).then(function(rows){
console.log("4. "+rows[0].feldtyp);
connection.release();
return;
}).catch(function(error){
if (connection && connection.release) connection.release();
//logs out the error
console.log(error);
});
}
erzeugt als Ausgabe:
start
1. Durchlauf
2. Durchlauf
3. Durchlauf
4. Durchlauf
fertig
1. datum
2. zeit
3. text
4. farbe
1. datum
2. zeit
3. text
4. farbe
1. datum
2. zeit
3. text
4. farbe
1. datum
2. zeit
3. text
4. farbe
Wobei das Script hier:
for (i=1;i<=5 ;i++ ) {
blabla(i);
}
function blabla(i) {
pool.getConnection()
.then(function(conn){
connection = conn;
var result = connection.query('select feldtyp from werte where idnr = ?', param1);
return result;
}).then(function(rows){
console.log(i+". Durchlauf");
console.log("1. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param2);
return result;
}).then(function(rows){
console.log("2. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param3);
return result;
}).then(function(rows){
console.log("3. "+rows[0].feldtyp);
var result = connection.query('select feldtyp from werte where idnr = ?', param4);
return result;
}).then(function(rows){
console.log("4. "+rows[0].feldtyp);
connection.release();
return;
}).catch(function(error){
if (connection && connection.release) connection.release();
//logs out the error
console.log(error);
});
}
diese Ausgabe erzeugt:
start
fertig
1. Durchlauf
1. datum
2. zeit
3. text
4. farbe
2. Durchlauf
1. datum
2. zeit
3. text
4. farbe
3. Durchlauf
1. datum
2. zeit
3. text
4. farbe
4. Durchlauf
1. datum
2. zeit
3. text
4. farbe
5. Durchlauf
1. datum
2. zeit
3. text
4. farbe
Wobei nach meinem (und Deinem) bisherigen Verständnis ja kein Unterscheid sein sollte.