[英]Node.js. How can I replace 'return new Promise' with Async Await syntax?
我正在使用Node.js
和npm mysql 。 如何在這里“擺脫” return new Promise
並將其替換為async await
語法?
const config = require('config');
const mysql = require('mysql');
class DatabaseConnection {
static connect(logger) {
return new Promise(((resolve, reject) => {
const con = mysql.createConnection({
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.db,
});
con.connect((err) => {
if (err) {
reject(err);
}
else {
logger.debug('Connected!');
resolve(con);
}
});
}));
}
}
module.exports = DatabaseConnection;
由於.connect
使用的是回調函數,而不是Promise
,因此您不能這樣做。 有幾種包裝回調的策略。
只需使用util.promisify
將API轉換為util.promisify
,即可等待它:
const { promisify } = require("util");
function connect(){
const con = mysql.createConnection({
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.db,
});
return promisify(con.connect.bind(con))();
}
您可以使用這種方式。 請參考MDN鏈接以獲取等待的Asyn。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
const config = require('config'); const mysql = require('mysql');
class DatabaseConnection {
static connect(logger) {
function getConnect() {
return new Promise(((resolve, reject) => {
const con = mysql.createConnection({
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.db,
});
}
async function asyncCall(){
try
{
var status = await getConnect();
}catch(err){
reject('failed');
}
}
asyncCall();
}
module.exports = DatabaseConnection;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.