3 回答
TA贡献1854条经验 获得超8个赞
你可以尝试这样的事情:
connect() {
return new Promise((resolve, reject) => {
let pool = sql.connect(this.sqlConfig, function(err) {
if(!err) {
resolve();
}
else {
reject();
}
});
});
}
dao.connect().then(<<call function here>>)
TA贡献1836条经验 获得超13个赞
您的方法: dao.connect() 不返回承诺。因此,第一件事是更改该方法以返回一个承诺,然后您可以收听该承诺,然后决定是否运行查询。:
...
connect() {
return new Promise((resolve, reject) => {
try {
console.log("Connecting database.....");
let pool = sql.connect(this.sqlConfig);
if (pool)
console.log("Database connected");
resolve("Success");
} catch (err) {
console.log(err);
reject(err);
}
});
}
...
然后像这样调用你的连接方法:
dao.connect().then(
success => { ... }, // you can continue querying
error => { ... } // something went wrong
);
也尝试在这里阅读一些关于如何使用承诺的信息:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
TA贡献1943条经验 获得超7个赞
要在你的函数中使用 then ,它需要返回任何结果并将其转换为 promise,或者不使用 await,它可能会工作!
async connect() {
console.log("Connecting database.....");
sql.connect(this.sqlConfig).then(pool => {
if (pool)
console.log("Database connected");
}).catch (err{
console.log(err);
});
}
抱歉识别错误!
添加回答
举报