【发布时间】:2019-06-14 16:57:51
【问题描述】:
等待 Select * 函数,然后在打印完成后执行操作。 但是它在打印输出之后匆匆忙忙地完成了所有事情。所以它是这样的:调用 Await 函数,然后在调用 resolve 之前调用 await 之后的其他东西,然后打印出 await 函数。
老实说,我已经尝试了很多。制作匿名异步块以在函数内运行等待。我之前没有对函数使用 Promise,但后来添加它们认为我需要解决它们。但没有骰子。
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(__dirname+'/requestLog.db');
test();
async function test(){
await selectAll();
console.log('test')
}
function selectAll(){
return new Promise((resolve, reject) => {
try {
db.serialize(function() {
db.each("SELECT rowid AS id,* FROM requests", function(err, row) {
console.log(row);
});
resolve()
});
} catch (error) {
console.log(`Error With Select ALL(): \r\n ${error}`)
reject();
}
});
}
我确定只是我错过了一些荒谬的事情。 现在我觉得我正在进入一个兔子洞并转圈圈 请不要评判我哈哈
我想将数据库中的所有内容打印到控制台。然后在我打印后执行(“测试”)或任何操作。
但一切都在等待中运行
【问题讨论】:
-
将
resolve()移动到db.each()的回调中。否则它不会等待db.each()完成。
标签: node.js sqlite promise async-await