下面是我想做的事情的简化版本。我想保存从mssql.query获得的值,并在mssql.query函数的外部检索它。我正在使用变量"total"来做到这一点。
var total;
mssql.query("EXEC getMeetingInfo ?", [meetingID],
{
success: function(results1) {
console.log(results1);
total = results1;
},
error: function(err) {
console.log("error is: " + err);
response.send(statusCodes.OK, { message : err });
}
});
response.send(statusCodes.OK, total ); //does not work
mssql.query是异步的,所以在设置total之前,response.send正在运行。你需要把它转移到成功函数中。
更新:要处理多个并将它们链接在一起,请执行以下操作(psuedo代码):
var total = 0;
mssql.query(query, [],
{
success: function(results1) {
total = total + {queryresult};
mssql.query(query, [],
{ success: function(results1) {
total = total + {queryresult};
//Keep nesting as needed, and on last nest call this
response.send(statusCodes.OK, total );
}
}
}
}
请注意,为回调创建一个单独的javascript类可能是合适的,以使其更易于读取/维护,但这种回调模型是在异步世界中实现这一点的正确方法。