【发布时间】:2018-10-10 00:50:44
【问题描述】:
我在javascript 中有 2 个函数,我想在回调中设置一个全局变量,然后从我的主函数中返回它。我知道javascript本质上是异步的,那么最好的方法是什么?我有以下代码:
var results="";
function getData() {
var sql = require("mssql");
var dbConfig={
server:"server",
database: "db",
user:"user",
password: "pw"
}
var conn = new sql.Connection(dbConfig);
var req = new sql.Request(conn);
conn.connect(function (err){
if (err) {
console.log(err);
return;
}
req.query("SELECT * FROM table",resultsCallback)
conn.close();
});
return results;
}
function resultsCallback (err, recordset) {
var tableify = require('tableify');
if (err) {
console.log(err);
}
else {
var html = tableify(recordset);
html = html.replace('<table>','');
html = html.replace('</table>',');
results=html;
}
};
【问题讨论】:
-
究竟是什么不工作,它应该如何工作?
-
results未定义,因为 javascript 是异步的。return语句在回调函数完成之前执行。如何在返回results之前等待回调完成(确保在返回之前定义results)? -
结果如何
undefinded而不是""? -
对不起,这就是我的意思。
results为空,并且未返回包含来自 resultsCallback 函数中的html变量的数据。我设置results等于html
标签: javascript node.js asynchronous callback return