我试图了解如何使用 javascrip/Node.js 函数来确保在写入 console.log (或 Web 服务器)之前完成 SQL 数据提取。阅读了 Promise、基于 Promise 的驱动程序、异步函数,但还没有有效的示例。
在 IBM i (AS400) 上使用节点 v18.17.1
示例:
// npm install idb-pconnector
function get_data() {
const { Connection, Statement, } = require('idb-pconnector');
async function execExample() {
const connection = new Connection({ url: '*LOCAL' });
const statement = new Statement(connection);
const results = await statement.exec('SELECT * FROM QIWS.QCUSTCDT');
console.log(`1. results:\n ${JSON.stringify(results)}`);
// return results;
return JSON.stringify(results);
}
data = execExample().catch((error) => {
console.error(error);
});
}
data = get_data();
console.log("2." + data);
事情是
get_data()
进行异步调用,因此您的 console.log("2." + data);
在更新“data”变量之前执行。
最后尝试使用此方法填充数据变量:
async function fetchData() {
try {
const data = await get_data();
console.log("2." + data);
} catch (error) {
console.error(error);
} }