JavaScript代码:
let result = db.all(query, [], (err, rows) -> {
return rows;
});
return result
它不起作用,函数返回Database{}
。通过日志记录,我发现函数首先返回结果,然后才返回行,即它不等待db.all(...)
的执行。
如何使代码按正确的顺序执行:首先执行db.all
,等待db.all
返回值,然后再返回结果?当结果的值显然取决于db.all(...)
时,编译器为什么要重新排序?
您正在处理异步代码和回调函数您正在使用的依赖项使用匿名回调函数来处理查询的异步执行。在数据库执行了查询之后;行";回调函数的参数。编译器的行为与预期一致。
为了使代码异步,您可能需要考虑使用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
请记住,从中调用此函数的函数也需要是异步的。提供的链接中有更多信息。