在javascript中从mssql.query接收变量

在javascript中从mssql.query接收变量,javascript,sql,function,azure,Javascript,Sql,Function,Azure,下面是我想做的一个简化版本。我想保存从mssql.query获得的值,并在mssql.query函数外部检索它。我使用变量total来实现这一点 var total; mssql.query("EXEC getMeetingInfo ?", [meetingID], { success: function(results1) { console.log(results1); total

下面是我想做的一个简化版本。我想保存从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是异步的,因此在设置总计之前,您的response.send正在运行。您需要将其移动到success函数中

更新: 要处理多个并将它们链接在一起,请执行类似以下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类可能比较合适,以使其更易于读取/维护,但是这种回调模型是在异步世界中实现这一点的正确方法。

问题是我有多个mssql.query,我想运行/concatate,所以我需要能够在函数之外访问它。是否可以暂停,直到完成或其他事情?我不确定是否可以使其同步,但无论如何,这是不赞成的。您需要嵌套回调来实现这一点。。。我将更新answerIt返回[object object][object object][object object object]而不是实际数据。。。我得到了非常典型的异步javascript调用的JSON数据;如果您的SQL语句是正确的,我希望这些json中包含您的数据。解析它们将取决于您所期望的特定数据。