为什么我的变量解析为未定义

async JS: why does my variable resolve to undefined?

本文关键字:未定义 我的 变量 为什么      更新时间:2023-09-26

我从数据库中获取数据。这工作。

然而,我的代码流有问题,我认为它与async有关:为什么facturasDotaciones[](几乎最后一行代码)解析为未定义?

//npm sql DB access module (https://www.npmjs.com/package/mssql)
var sql = require('mssql'); 
//sql config object (username, password, etc)
var config = {
    bla, bla, bla
}
function traerFacturasDotaciones(){ 
            var request2 = new sql.Request(connection);             
            request2.execute('seleccionarFacturasCorreosDotaciones', function(err, response, returnValue) {
                function peluquiarFacturas(facturas){
                    for(var i=0;i<facturas[0].length;i++){  
                        facturas[0][i]["CO"]=facturas[0][i]["CO"].trim();    
                    }
                    return facturas;
                }
                return peluquiarFacturas(response);
            });
}
//get data from server and clean up
var connection = new sql.Connection(config, function(err) {
    var request = new sql.Request(connection);
    request.execute('seleccionarTiendas', function(err, tiendasRet, returnValue) {
        var facturasDotaciones=[];
        facturasDotaciones=traerFacturasDotaciones();
        console.log("facturasDotaciones", facturasDotaciones);
    });
});

traerFacturasDotaciones()不返回任何内容。它调用request2。Execute,它调用一个传递响应的回调函数。一种选择是将facturasDotaciones作为参数传递给traerFacturasDotaciones,并在该函数中设置值,但即使这样,它也会以一种灵活的方式分配。浏览请求。

函数traerFacturasDotaciones不返回任何东西。注意,返回语句是作为request2.execute的第二个参数给出的回调函数。但是那个回调是异步执行的,你的函数traerFacturasDotaciones在回调执行之前就结束了。