@Mazino

Как вывести результат асинхронной функции во внешнюю переменную?

Я использую библиотеку mysqljs, которая делает асинхронный запрос базу, и возвращает результат в callback функцию:
var data = [];
connection.query('select * from `users` where `is_enabled` = 1;', (err, response) => {
	if(err) throw err;
	data = response.map(item => item.value);
        console.log(data)//array data
});
console.log(data)//undefined

Мне понятно почему так происходит, но не смотря на гору перечитанного материала, я так и не смог вывести данные так, чтобы с ними можно было работать синхронно, либо вся логика должна быть внутри асинхронной функции, либо внутри нее же вызвать другую и передать данные туда, и таким образом результат ее работы снова недоступен синхронному коду и это может продолжаться бесконечно. Существует ли способ сохранить асинхронные данные в переменную и работать синхронно? Заранее благодарен за помощь.
  • Вопрос задан
  • 1016 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsepen
@tsepen
Frontend developer
Это называется callback hell, раньше так и делали, но сейчас есть можно использовать async await
Ответ написан
@Interface
Вас спасет async/await!
Почитать можно тут https://habr.com/ru/company/ruvds/blog/326074/, например
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы