很想知道为什么async / await在下面的情况下不起作用?
你认为我做错了什么。
conn是一个异步函数,async函数是一个可以链接的承诺吗?
const db = require('oracledb');
const conn = async () => {
return await db.getConnection({user: "my_user",
password: "my_pass",
connectString: "dbserver/dbservice"
});
}
undefined
> conn
[AsyncFunction: conn]
conn.execute('select sysdate from dual').then((result) => {
console.log(results.row);
});
我收到错误原因?
ypeError: conn.execute is not a function
at repl:1:6
at ContextifyScript.Script.runInThisContext (vm.js:50:33)
at REPLServer.defaultEval (repl.js:240:29)
at bound (domain.js:301:14)
at REPLServer.runBound [as eval] (domain.js:314:12)
at REPLServer.onLine (repl.js:441:10)
at emitOne (events.js:121:20)
at REPLServer.emit (events.js:211:7)
at REPLServer.Interface._onLine (readline.js:282:10)
at REPLServer.Interface._line (readline.js:631:8)
答案 0 :(得分:0)
异步功能的结果确实是一种承诺。但是你不能将任何东西链接到一个承诺 - 你可以链接诸如then()
和catch()
等承诺的函数。此外,您需要调用conn()
,它将返回一个承诺结果,而不是链接该函数本身。
您应该执行以下操作:
conn()
.then(connection => connection.execute('select sysdate from dual'))
.then(result => console.log(results.row))
注意:我不确定oracledb api从getConnection()
传来的是什么我猜它是进一步调用的对象。