node.js的闭包函数中怎样使用async/await?
使用了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???
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
依據你的問題描述,猜測想做的是:
Promise
鏈,擺脫 callback hell;Promise
的返回。使用
Promise
等待
Promise
的返回值楼上的解决方案可以,另外async/await不是这样用的,你既然都read().then去取结果了,你还用什么async/await。。。
应该这样用
awati后要接返回的Promise