我不是一个真正的承诺忍者,我知道我做错了什么。但是我找不到我所遇到的一些特殊/相似的问题。
问题:我为 IndexedDB 使用 Dexie.js 包装器,它是异步的。我有一个全局数据库,它指向其他一些 dexie 数据库。
function handleDatabases() {
var result = [];
db.jobs.orderBy('title').filter(function(job) {
return job.someBooleanCondition;
}).each(function(job, cursor) {
let jobDetails = new Dexie(job.correspondingDB);
jobDetails.version(1).stores({
details: 'key,value1,value2'
});
jobDetails.details.get(someKey).then(function(detail) {
result.push({job: job, detail: detail});
})
}).catch(function(error) {
console.log(error);
});
handleResult(result);
}
我已经用一种可能很奇怪的形式为 SO 重写了它,但最终目标是我可以使用数组result
来处理一些更新。但是,由于它是异步的,因此它始终为空,直到您在控制台中检查它,它永远不会为空。如何将其重写为同步?