static listFunc() {
let funclist = [];
const queryList = "SELECT * FROM func";
mysqlModule.queryDB(database, queryList, (err, result) => {
console.log(result[0].id);
if (err) {
res.status(500).json({
"status_code": 500,
"status_message": "internal server error"
});
} else {
for (var i = 0; i < result.length; i++) {
let func = {
'id': result[i].id,
'psw': result[i].senha,
'nome': result[i].nome,
'DoB': result[i].dataNascimento,
'sexo': result[i].genero,
'morada': result[i].morada,
'permissoes': result[i].permissoes
}
funclist.push(func);
}
return funclist;
}
});
}
我创建了一个函数,将数据库中的所有worker都提供给我,然后将它们存储在 funclist
数组。问题在于 for
循环在查询之前运行。如何仅在查询完成后运行循环?
2条答案
按热度按时间slhcrj9b1#
首先,我将“for”循环更改为“each”循环,并且我使用承诺,只有在完成查询和循环之后,才能将数据提供给我。
然后我只是在listfunc()返回假装的数据之后才渲染了jade。
bxfogqkk2#
将回调函数传递到listfunc:
static listFunc(callback){...}
不返回列表,只需调用回调:callback(funclist);