На данный вопрос уже ответили:
Добрый день. Есть следующий код. (упрощен)
function first_func(somedata) {
if (somedata == true) {
let data = {};
mysql.query('SELECT * FROM test WHERE id = 1', function(err, results, fields) {
data['id'] = results[0].id;
data['name'] = results[0].name;
});
console.log(data); // {}
}
}
first_func(true);
Не могу добавить данные в data. При этом я понял что либо теряется контекст, либо вызов console.log идет до записи данных. Пробовал делать стрелочную функцию (err, results,fields) => { ... }, результат тот же.
Проблема в от что mysql.query асинхронная функция по ее окончанию вызывается callback в то время когда вызовится callback уже отработает console.log(data);
проще говоря код выполняется последовательно но не ожидает но не ожидает окончания работы mysql.query
Как вариант можно mysql.query завернуть в promise и использовать async/await, ну или более изощренные способы.
Топ-20 лучших университетов мира по IT и программированию – Образование за границей
Как сделать чтобы getData() возвращала не undefined, а содержимое строки 36?
Получаю с сервера информацию, заполняю массивы и пытаюсь вывести таблицу в html, но выдаёт ошибку"Cannot set property 'innerHTML' of null"Перемещение скрипта...
Есть контейнер, который подключен к Redux'уЭтот контейнер, по сути, управляет всем приложением