私はlocalForageを使用してキーとオブジェクトのペアとしてデータを格納しています。私は既に保存したデータを取得するために次のコードを使用しています。Javascript LocalForageの長さをNULLに戻す
// 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知ったとhereから上記のコードスニペットを取った。)
これは働いていませんでしたので、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
を与える判明した後、私はconsole.log()
を置きますので、その下のforループは決して実行されないようです。しかし、私は手動でクローム開発ツールのコンソールでlocalforage.length();
を入力した場合、Webページをロードした後、それは次の値を返します。
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
__proto__:Promise
[[PromiseStatus]]:"resolved"
[[PromiseValue]]:2
。では、コードスニペットが機能しない理由と長さがnull
と返される理由は何ですか?私はこれが私がよく知らない約束と関係があると感じています。
'.LENGTH()'関数文書化されているように、しかし、コールバックを許可します。 APIはどちらのメカニズムもサポートしています。 – Pointy
@Pointy私の考え。 – AZG
答えが私の問題を解決しました。 – AZG