Невозможно синхронно выполнить асинхронное обещание.
Однако вы ищете Promise.all()
.Кроме того, connection.open
также является асинхронным, и быстрое открытие и закрытие соединений с MySQL неэффективно.Вы должны открыть соединение перед циклом, выполнить запросы и затем закрыть его (в моем примере это не показано).
Пример
Файл 1:
var db = require('./promiseUnderStanding');
var fun = function () {
var promises = [];
for (var i = 0; i < 10; i++) {
promises.push[db.getFromDb(i, 0)];
}
Promise.all(promises).then(function(values){
console.log(values):
})
}
fun();
Файл2:
var mysql = require("mysql");
module.exports = {
getFromDb : function (num1,num2) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'demo'
});
var queryPromise = new Promise(function(resolve, reject) {
connection.connect(function(err){
connection.query('SELECT '+num1+' + '+num2 +' AS solution', function (error, results, fields) {
if (error) {
reject(error)
}
else {
resolve(results)
}
});
})})
connection.end();
return queryPromise;
}
}