我们已经开始使用 CacheStorage API。通常它工作正常,但有时浏览器会遇到 CacheStorage 承诺从不响应的情况(即它们既不解决也不拒绝)。
一旦我进入这种情况,我可以在第一次调用时 100% 重现它,例如:
let promise = caches.open("TestDB");
console.log("open - started");
promise
.then(cc => console.log("open - complete"))
.catch(ex => console.log("open - failed", ex));
console.log("open - waiting");
在示例代码中,它将打印:
open - started
open - waiting
但从来没有其他两个日志。
任何想法为什么会发生这种情况?以及如何解决这个问题?
如果我打开一个私人标签,那么它工作正常。从 UI 中清除缓存也可以解决问题。
这已在 Chrome 和 Safari 上重现。
我们已经看到open
调用成功但随后match
随机失败(即无法解决)的其他情况,即它似乎取决于对缓存的请求数,因为添加console.log
似乎使问题不那么频繁。