gpt4 book ai didi

javascript - 无法在node js中使用 sleep 或暂停

转载 作者:行者123 更新时间:2023-12-03 00:33:08 27 4
gpt4 key购买 nike

我正在尝试在 Node js 中的 MySQL 数据库中进行简单搜索,并希望在模板上发送搜索结果。

    app.post('/result', jsonParser, function(req, res) {
var sol = []
var ins= []


var val= req.body.typeahead
connection.query('SELECT Sol_name from solutions where Sol_name like "%'+val+'%"', function(err, rows, fields) {
if (err) throw err;

for(i=0;i<rows.length;i++)
{
sol.push(rows[i].Sol_name);
}
res.end(JSON.stringify(sol));
});
connection.query('SELECT ins_name from installtions where ins_name like "%'+val+'%"', function(err, rows, fields) {
if (err) throw err;

for(i=0;i<rows.length;i++)
{

ins.push(rows[i].ins_name);

}
res.end(JSON.stringify(ins));
});

var context={
sol:sol,
ins:ins
}
//Above context going blank

res.render('pages/search',context);
});

现在的问题是,当我执行此代码时,它正在发送空白 sol 和 ins 数组,因为它没有等待完成从数据库部分的获取。

这是由于 Node js 的异步特性。我该如何解决这个问题

我也在渲染到模板之前尝试 sleep ,但 sleep 在 Node js 中不起作用。

请帮忙

最佳答案

app.post('/result', jsonParser, function(req, res) {
var sol = []

var val= req.body.typeahead
connection.query('SELECT Sol_name from solutions where Sol_name like "%'+val+'%"', function(err, rows, fields) {
if (err) throw err;

for(i=0;i<rows.length;i++)
{
sol.push(rows[i].Sol_name);
}
var context= {sol:sol}
res.render('pages/search',context);
});
});

查询与您的下一条指令异步发生。因此执行回调内的代码。如果 .query 返回一个 Promise,那么您可以使用 .then() 或 async/await。

此外,如果删除 res.end 行,因为它将在渲染页面之前结束连接。 (如果使用异步/等待)

关于javascript - 无法在node js中使用 sleep 或暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com