将promise转换为async



我正在用electronic和SQLite做一个项目,我遇到了一个同步性问题
经过搜索,我想出了以下解决方案,但我想知道是否可以将以下承诺转换为异步/等待模式

const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./test.db', (err) => {
if (err) console.error('error with database ', err);
});
console.log('start');
function getData() {
return new Promise((resolve, reject) => {
db.get('select * from TYPE', (err, row) => {
if (!err) resolve(row);
});
});
}
async function play() {
var a;
a = await getData();
console.log(a);
}
play();

您可以使用sqlite3-promisify:

const sqlite3 = require('sqlite3-promisify').verbose();
let db = new sqlite3.Database('./test.db', (err) => {
if (err) console.error('error with database ', err);
});
console.log('start');
async function getData() {
return await db.get('select * from TYPE');
}
async function play() {
var a;
a = await getData();
console.log(a);
}
play();

或者承诺自己:

const util = require ('util');
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./test.db', (err) => {
if (err) console.error('error with database ', err);
});
console.log('start');
async function getData() {
return await util.promisify(db.get.bind(db))('select * from TYPE');
}
async function play() {
var a;
a = await getData();
console.log(a);
}
play();

最新更新