Почему обещание CacheStorage.open никогда не отвечает?
Мы начали использовать 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
но никогда не два других журнала.
Есть идеи, почему это случилось? и как решить проблему?
Если я открываю личную вкладку, то она работает нормально. Очистка кеша из пользовательского интерфейса также решает проблему.
Это было воспроизведено на Chrome и Safari.
Мы видели другие ситуации, когда open
вызов успешен, но потом match
терпит неудачу (то есть не разрешает) случайным образом, то есть, кажется, что это зависит от количества запросов к кешу, как добавление console.log
кажется, делает проблему менее частой.