function liveFeed_update() {
var symbol_in_table = "SELECT count (*) as total FROM livedata
wherescript_name = '"+s_symbol_script+"'";
con.query(symbol_in_table, function (err, result) {
if (err) {
throw err;
}
else {
num_row = + result[0].total;
console.log("Number of Rows in inner level:",+ num_row);
}
});
console.log("Number of Rows in outer level:",+ num_row);
}
Node.js首先执行外部控制台日志,然后再进入内部。结果是我没有得到正确的结果。
但是我想先执行sql查询,然后根据结果执行下一步。
答案 0 :(得分:0)
请记住,Node.js是 asynchronous ,这意味着代码将无法正常运行,这与您用于同步(阻塞)代码的期望相反。
如果您需要递增num_row
并可靠地返回,则必须将其与以下之一链接在一起:回调,尾随then
或使用async
/ {{1 }}。
我鼓励您使用诺言:
await
对回调函数也可以做到这一点,但随后变得棘手,通常取决于async库。
如果您可以使用function liveFeed_update() {
var symbol_in_table = "...";
var num_row = 0;
con.query(symbol_in_table).then(function(results) {
results.forEach(function(result) {
num_row = + result[0].total;
console.log("Number of Rows in inner level:", num_row);
});
}).then(function() {
console.log("Number of Rows in outer level:",+ num_row);
});
}
/ async
的本机Node.js功能,它甚至会更加简单,从而使您的异步代码更像传统的同步代码:
await