我正在尝试创建一个函数,该函数返回对象存储库中所有对象的数组。这是我目前拥有的JavaScript代码:
function readAllSessions() {
var output = [];
database.transaction("practiceSessions").objectStore("practiceSessions").openCursor().onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
output.push(cursor.value);
cursor.continue();
}
}
return output;
}
这将返回一个空数组。我发现游标对象为空,但我看不出为什么,因为对象存储区中有3个对象。
答案 0 :(得分:1)
在没有回调或承诺的情况下,您无法从异步调用返回任何内容,这是通过回调实现的功能。
function readAllSessions(callback) {
var output = [];
database.transaction("practiceSessions").objectStore("practiceSessions").openCursor().onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
output.push(cursor.value);
cursor.continue();
}else{
callback(output)
}
}
}
readAllSessions(function(output){
// use output here.
})
供以后参考,请阅读此问题及其答案:
How do I return the response from an asynchronous call?
此过程是在浏览器中使用Web API的本质。