Добрый день!
Столкнулся с такой проблемой как синхронное и асинхронное выполнение кода, как работает понимаю, но как реализовать не знаю.
return new Promise(function(resolve, reject) {
var array = [];
// Делаю запрос к таблице
connection.query(" SELECT * FROM `tb_1` WHERE `id`=? ", [id], function(error, result) {
... // Делаю проверки и вывожу результат в виде массива
// Далее хочу перебрать массив, чтобы записать его с отдельным типом в НОВЫЙ отдельный массив array
for (var i in result) {
// Начинаю перебор и сортирую записи в НОВЫЙ массив по типам
switch (result[i]) {
case 'type_1':
array[result[i].id] = {
'type_1': {}
};
break;
case 'type_2':
// ВНИМАНИЕ
// И вдруг мне нужно сравнить значение итого типа с другой таблице!
// Я делаю запрос к другой таблице
connection.query(" SELECT * FROM `tb_2` WHERE `id`=? ", [id], function(error, result_2) {
... // Делаю нужные мне проверки, добавляю в массив array новые записи к этому типу из таблице tb_2
array[result[i].id] = {
'type_2': {}
};
})
break;
}
}
//И так как это все в Promise, я возвращаю обещание
resolve(array) // И вот тут возникают траблы, так как я делал асинхронный запрос к tb_2 то записи type_2 не записалась в array
})
})
Как быть в такой ситуации?