私はここで約束されたことを少し新しくしているので、その解決策は簡単なものでも構いません。を使用してIndexedDb内のアイテムを繰り返し削除する約束
私の目標は、クォータが設定されているかどうかを確認し、必要に応じて、スペースがあるまでstore
からアイテムを削除することです。
私の試みはここですが、私の最大の痛みポイントがwhile
ループということです - 項目は削除を継続するかどうかを再評価するために削除されるまで待機する方法を考え出す:
const store = database.transaction(storeName, "readwrite").objectStore(storeName);
while (storageUsedInGb > storageQuotaInGb) {
// problem: pause loop here
const latestMediaRequest = store.get(latestMediaGuid);
latestMediaRequest.onsuccess = function(event) {
var deleteRequest = store.delete(latestMediaGuid);
deleteRequest.onsuccess = function() {
storageUsedInGb -= event.target.media.size/1024/1000/1000;
// problem: continue loop here
}
deleteRequest.onerror = reject;
}
latestMediaRequest.onerror = reject;
}
どのようにすることができますwhileループでは、latestMediaRequest
の解像度からdeleteRequest
(storageUsedInGb
を更新する)の解像度になるまで繰り返します。
'async' /' await'を使用できますか? – Bergi
@Bergiできません:/ – SB2055
次に再帰を使用する必要があります – Bergi