【发布时间】:2017-06-04 18:28:03
【问题描述】:
我对这里的 promises 有点陌生,所以解决方案可能是微不足道的/语法上的。
我在存储媒体时的目标是查看是否设置了配额,并且 - 如果需要 - 从 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 我不能:/
-
那你需要使用递归
标签: javascript jquery promise indexeddb