我需要知道使用异步createConnection是否更好
这会改变加载速度吗?
我正在使用express、ReactJS、promise-mysql
我应该使用什么?
这个:
async connect () {
try{
const conn = await db.createConnection(this.config);
this.conn = conn;
} catch(error){
console.log(error)
}
}
或者这个
connect () {
return db.createConnection(this.config).then(conn => {
this.conn = conn
})
}
最佳答案
嗯,您的两个示例中的错误处理完全不同。首先,您记录错误并允许解决返回的 promise 。在第二种情况下,连接错误将拒绝返回的 promise 。所以,这是一个主要的结构差异。
如果您将第一个更改为:
async connect () {
this.conn = await db.createConnection(this.config);
}
然后,这在结构上与第二个示例相同:
connect () {
return db.createConnection(this.config).then(conn => {
this.conn = conn;
});
}
现在,如果您比较这两个,它们会产生相同的结果(除了在边缘情况下,db.createConnection()
会同步抛出,但希望不会这样做)。
因此,如果您根据这两个具有相同结果的问题重新提出问题,答案是这并没有真正产生什么区别。
如果执行速度存在可测量的差异,那么差异将非常小,以至于不太可能有意义,并且无论存在什么差异,都仅取决于特定的 JS 引擎实现,并且随着 JS 引擎的成熟,可能不会恒定.
所以,这实际上只是编码风格和您喜欢的问题。 await
版本需要更少的打字和更少的代码行(通常都是如此)。我个人倾向于不使用 async/await
,除非我有多个异步操作要尝试排序,但这可能只是使用 .then()
编码的一些惯性。 code> 在 await
出现之前有一段时间。
关于javascript - 在 Promise-mysql 的 createConnection 中使用异步函数会改变加载速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58825228/