我从数据库中获取数据。这很有效。
但是,我的代码流有问题,我认为它与异步有关:为什么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);
});
});
答案 0 :(得分:0)
traerFacturasDotaciones()不会返回任何内容。它调用request2.execute,它调用传递响应的回调函数。 一种选择是将facturasDotaciones作为参数传递给traerFacturasDotaciones并在该函数内设置值,但即便如此,它也将以asncy方式分配。通过request.execute方法查看它是否返回可以等待的承诺?
答案 1 :(得分:0)
函数traerFacturasDotaciones不返回任何内容。请注意,return语句位于作为request2.execute的第二个参数给出的回调函数中。但是这个回调是异步执行的,你的函数traerFacturasDotaciones在执行回调之前就结束了。