【发布时间】:2019-10-19 03:46:44
【问题描述】:
我对异步函数没有经验,我想在 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;
});
});
实际上这是完整的问题:我做了一些调试,显然在解决承诺之前,for 循环中的 i 值增加了。另外,正如我提到的,我不熟悉异步函数,您能否提供一个关于 Promise 和异步函数如何工作的描述性资源?
谢谢
注意:为了更好的缩进,代码如下:https://hastebin.com/fovayucodi.js
【问题讨论】:
-
不要忘记返回你希望外部从你的异步函数接收的内容。
-
请在您的帖子中提供更好的缩进,而不是某些外部网站
标签: javascript node.js asynchronous