我正在使用localForage将数据存储为键对象对。我正在使用以下代码来检索我已经存储的数据。
// Find the number of items in the datastore.
localforage.length(function(length) {
// Loop over each of the items.
for (var i = 0; i < length; i++) {
// Get the key.
localforage.key(i, function(key) {
// Retrieve the data.
localforage.getItem(key, function(value){
//do stuff
});
});
}
});
(我发现了 localforage 并从这里获取了上面的代码片段获取了上面的代码片段。)
这不起作用,所以我console.log()
把localforage.length()
// Find the number of items in the datastore.
localforage.length(function(length) {
console.log(length);
// Loop over each of the items.
for (var i = 0; i < length; i++) {
// Get the key.
localforage.key(i, function(key) {
// Retrieve the data.
localforage.getItem(key, function(value)
//do stuff
});
});
}
});
结果是console.log(length)
给了null
,所以它下面的for循环似乎永远不会被执行。但是,在加载网页后,如果我localforage.length();
在 Chrome 开发人员工具控制台中手动输入,它会返回以下内容:
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
__proto__:Promise
[[PromiseStatus]]:"resolved"
[[PromiseValue]]:2
这是有道理的,因为我目前存储了 2 个对象。那么为什么我的代码片段不起作用,为什么长度返回为null
?我觉得这与我不熟悉的承诺有关。