У меня есть эта структура кода:Node.js - MySQL запросов внутри Еогеасп
connection.query(query1,function(err,rows) {
var response = [];
//doing something with rows
rows.forEach(function(item) {
connection.query(queryItem,function(err,rows) {
//doing something
result = rows[0].field;
//and want to push it to an array
response.push(result);
});
});
console.log(response); //empty
});
Я знаю, что Foreach блокирует, но запрос не является блокирующим. Я пытался использовать обещания:
connection.query(query1,function(err,rows) {
var response = [];
//doing something with rows
rows.forEach(function(item) {
var promise = new Promise(function(resolve,reject) {
connection.query(queryItem,function(err,rows) {
//doing something
result = rows[0].field;
//and want to push it to an array
resolve(result);
});
});
promise.then(function(result) {
console.log(result); //ok
response.push(result) //not ok, result is empty
});
});
console.log(response); //empty
});
Но это не помогло. Как я могу передать значение в массив из неблокирующей функции и использовать его после?
Является ли это своеобразным обещанием или синей птицей? – Selfish
Я новичок в узле. требует ('обещания'); Может быть родным, я не знаю =) –