我有以下代码(db
和_db
是分开的,所以请不要感到困惑):
function getValues() {
let _db = [];
database
.init()
.then(function(db) {
/* some code that inserts a list of objects into the _db array */
})
.finally(function(db) {
if (db) db.close();
});
return _db;
}
问题是,每当我调用getValues()
函数时,我总是得到一个空的_db值。我知道它可能与异步JS有关。但是请告诉我如何获得_db的最终值,而不是_db的初始化的空值。
答案 0 :(得分:0)
_db
始终为空的原因是因为对数据库的调用是异步进行的。您的函数在调用完成之前终止,并返回一个空数组。
要处理异步调用,您将必须返回promise,然后由调用者处理
function getValues() {
return database
.init()
.then(function(db) {
/* some code that inserts a list of objects into the _db array */
})
.finally(function(db) {
if (db) db.close();
});
}