node.js / javascript / SQL 与 async/await - 行为不同步

问题描述 投票:0回答:1

我正在尝试调用进行 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 sql node.js db2
1个回答
0
投票

您尝试做的事情无法在 JavaScript 中完成。异步函数返回一个 Promise,在非异步函数中获取此 Promise 结果的唯一方法是在 Promise 上调用

then

let data = main.then(function (result) {
  console.log("%s", JSON.stringify(result)); 
});
console.log("3..")     
// coming out empty {} here.
© www.soinside.com 2019 - 2024. All rights reserved.