到目前为止,我已经完成了一个使用回调的项目,但是在更大的代码库中,我已经陷入了混乱。我想继续学习一些新功能,特别是异步功能。
我使用的是oop模式,因此我希望将其直接实现到oop中。问题是,我以前从未做过,也不知道该怎么做。我有一些带有回调的基本代码。有人可以将其更改为异步功能吗?
server.js
const object = require("./object");
new object(userID).name((data) => {
console.log(data);
});
object.js
module.exports = class{
constructor(userID){
this.id = userID;
}
name(callback){
mysqli.query("SELECT meno FROM uzivatelia WHERE id='"+ this.id +"'", (err, user) => {
callback(user[0].meno);
});
}
}
返回一个显式的Promise,将其连接到mysqli回调模式中:
module.exports = class {
constructor(userID) {
this.id = userID;
}
name() {
return new Promise((resolve, reject) => {
mysqli.query(
`SELECT meno FROM uzivatelia WHERE id = '${this.id}'`,
(error, record) => error ? reject(error) : resolve(record)
)
})
}
}
您也可以async
在方法定义之前添加,但是我认为这不会产生任何影响-无论您是否使用声明了Promiseasync
并调用代码都可以,该方法将变为异步await
。
const User = require('./user.js')
async testIt() {
const myUser = new User(12345)
const username = await myUser.name()
console.log(username)
}
testIt()
几个一般性提示。首先,为使堆栈跟踪更清晰,您将要命名此类。
其次,可能值得您花时间研究一种解决方案,以全面取消mysqli调用的节点。如果还没有这样的东西,我会感到非常惊讶。如果不是这样,您可以轻松地构建一些小的东西来涵盖最需要的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句