我正在尝试调用进行 SQL 调用并将数据返回到调用函数的函数 我尝试在 node.js/javascript 中使用异步/等待(承诺)语法失败 我的函数仍然异步运行。
也许不太明白这是如何工作的。 请参阅代码中的注释
const {dbconn, dbstmt} = require('idb-connector');
async function get_data(){
const {dbconn, dbstmt} = require('idb-connector');
const sql_stsmt = 'SELECT * FROM QIWS.QCUSTCDT';
const conn1 = new dbconn();
conn1.conn('*LOCAL');
const stmt = new dbstmt(conn1);
try {
await stmt.exec(sql_stsmt, (x) => {
stmt.close();
conn1.disconn();
conn1.close();
// getting expected data here..
console.log("1..")
console.log("%s", JSON.stringify(x));
return x;
});
}
catch (error) {
return console.error(error);
}
}
async function main() {
try{
const result = await get_data()
console.log("2..")
// still coming out undefined here...
console.log("%s", JSON.stringify(result));
return result;
}
catch(error){
return console.error(error);
}
}
let data = main();
console.log("3..")
// coming out empty {} here.
console.log("%s", JSON.stringify(data));
您尝试做的事情无法在 JavaScript 中完成。异步函数返回一个 Promise,在非异步函数中获取此 Promise 结果的唯一方法是在 Promise 上调用
then
。
let data = main.then(function (result) {
console.log("%s", JSON.stringify(result));
});
console.log("3..")
// coming out empty {} here.