使用了node sqlite3这个module,其中某个数据表有很多记录,需要用db.all()
方法获取并随机选择其中一条返回。但这是个稍微耗时的操作,需要使用async/await。
let sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('example.db');
async function read()
{
db.all('select * from foo where bar = ?', 1, await function (err, rows) {
return new Promise (function (resolve, reject) {
if (rows && rows.length > 0) {
let key = Math.floor(Math.random() * (rows.length - 0 + 1) + 0);
resolve(rows[key]);. // 在外部函数中获取这个值
} else {
reject(err);
}
});
});
}
怎样才能获取其中rows[key]
的返回值?
UPDATE:
根据MDN相关文档,尝试读取这个返回值,但得到的是undefined???
read().then(test => {
console.log(test); // 结果是undefined???
});
依據你的問題描述,猜測想做的是:
Promise
鏈,擺脫 callback hell;Promise
的返回。使用
Promise
等待
Promise
的返回值