这是我编写的一个简单脚本:
const Nightmare = require('nightmare');
const sql = require('mssql');
const itens = getRecords();
async function getRecords(){
let itensList = [];
const cfg = {
//config here
};
sql.connect(cfg, function(err){
if(err) console.log(err);
let request = new sql.Request();
request.query("<query here>", (err, result) => {
if(err) console.log(err);
itensList = result;
});
return itensList;
});
}
async function getPrices(){
try{
console.log(itens)
}catch(e){
console.log(e);
}
}
getPrices();
一切正常,但是当调用getPrices()函数时,正在记录以下内容:
Promise { undefined }
我在这里想念什么?
答案 0 :(得分:0)
request.query
正在被调用,但是在返回itenslist
之前,它只能被分配。
基本上,发生的顺序是:
request.query
被调用,并开始运行查询。request.query
是异步的,因此我们继续执行下一个任务-返回itenlist
request.query
完成运行,并在返回itenlist
后为其分配期望值。要获得所需的功能,我建议使用回调(node-mssql支持)。或者,您可以使用await
关键字。例如:
var queryText = 'SELECT 1 AS Value';
var queryResults = await connection.query(queryText);