У меня нет опыта работы с асинхронными функциями, и я хотел бы выполнить запрос в цикле for. Вот мой код:
app.route('/friendlist').post((req, res) => {
var body = req.body;
var list = "";
con.query(`SELECT * FROM player_friends WHERE main_user_id = '${body.player_id}'`, (err, row, fields) => {
if (err) throw err;
async function queryOutUserData(data) {
var rows = await new Promise((resolve, reject) => {
con.query(`SELECT * FROM players WHERE player_id = '${data.player_id}'`, (error, player, field) => {
if (error) {
console.log(error);
return reject(error);
}
resolve(player);
});
});
rows.then(message => {
return message
});
}
for (var i = 0; i <= row.length; i++) {
console.log(row[i].main_user_id);
var result = await queryOutUserData(row[i]);
list = list + ";" + result[0].player_id + ":" + result[0].player_username;
}
console.log(list);
return list;
});
});
Собственно, вот и вся проблема: я выполнил некоторую отладку и, по-видимому, значение i
в цикле for увеличивается до того, как обещание будет разрешено. Кроме того, как я уже упоминал, я не знаком с асинхронными функциями. Не могли бы вы предоставить описательный ресурс о том, как работают обещания и асинхронные функции?
Спасибо
ПРИМЕЧАНИЕ. Для лучшего отступа вот код:https://hastebin.com/fovayucodi.js