sqlite 等待查询结果

iyzzxitl  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(154)

JavaScript代码:

let result = db.all(query, [], (err, rows) -> {
   return rows;
});
return result

它不起作用,函数返回Database{}。通过日志记录,我发现该函数首先返回结果,然后才返回行,即它不等待db.all(...)执行。
如何让代码以正确的顺序执行:首先执行db.all,等到db.all返回值,然后再返回结果?当结果的值明显依赖于db.all(...)时,为什么编译器要重新排序呢?

mepcadol

mepcadol1#

您正在处理的asynchronous codecallback functions使用匿名回调函数来处理查询的异步执行。在数据库执行查询后,结果在回调函数的“row”参数中。编译器的行为与预期一致。
为了使代码异步化,您可能需要考虑使用Promise方法。

let requestPromise = new Promise((resolve, reject) => {
  //your code goes here
  db.all(query, [], (err, rows) => {
    //in case of error //reject(err)
    //otherwise
     resolve(rows);
  });
})
//return await requestPromise

请记住,您从中调用此函数的函数也需要是异步的。在提供的链接中提供了更多信息。

相关问题