【问题标题】:async JS: why does my variable resolve to undefined? [duplicate]async JS:为什么我的变量解析为未定义? [复制]
【发布时间】:2015-10-23 13:02:41
【问题描述】:

我正在从我的数据库中获取数据。这行得通。

但是,我的代码流程有问题,我认为它与异步有关:为什么 facturasDotaciones[ ](几乎是最后一行代码)解析为 undefined?

//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);
    });
});

【问题讨论】:

    标签: javascript node.js asynchronous


    【解决方案1】:

    traerFacturasDotaciones() 不返回任何内容。它调用request2.execute,后者调用一个回调函数来传递响应。 一种选择是您将 facturasDotaciones 作为参数传递给 traerFacturasDotaciones 并在该函数内设置值,但即便如此,它也会以随机方式分配。通过 request.execute 方法查看它是否返回您可以等待的承诺?

    【讨论】:

      【解决方案2】:

      函数 traerFacturasDotaciones 不返回任何内容。请注意,return 语句位于作为 request2.execute 的第二个参数的回调函数中。但是该回调是异步执行的,并且您的函数 traerFacturasDotaciones 在该回调执行之前结束。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2015-08-08
        • 2023-03-13
        • 2022-01-22
        • 1970-01-01
        相关资源
        最近更新 更多