【发布时间】:2018-12-10 03:39:13
【问题描述】:
我是一名 C/C++ 人,正在尝试使用 Node.js、Express.js 和 MariaDB 制作一个简单的 Web 应用程序。
function getData(sensor)
{
var query = c.query('SELECT * FROM sensor_data WHERE id >= ALL (SELECT id FROM sensor_data WHERE sensor = ?) AND sensor = ?', [sensor,sensor]);
query.on('result', function(res) {
res.on('data',function(row) {
return(row);
});
});
}
app.get('/', function(req, res) {
res.render('index', {
temperatureSala: getData('sala').temperature + 'ºC',
humiditySala: getData('sala').humidity + '%'
});
});
我的问题是处理异步。当我尝试渲染页面时,渲染函数首先完成运行,然后我发现变量未定义。查询结束,结果正确。
处理此问题的最佳方法是什么? 有什么问题欢迎提问。
谢谢!
【问题讨论】:
-
将“回调”传递给getData(就像
on中使用的那样)或使用promise 等。return(row)没有意义 1)它只适用于innermost函数 2) 它发生在 顶级函数返回之后。 -
参考:
function getData(sensor, functionToCallWithData) { .. }..getData('sala', function (data) { res.render.. }..