Доступ к indexedDB в ServiceWorker. Состояние гонки
Существует не так много примеров, демонстрирующих indexedDB в ServiceWorker, но все, что я видел, были структурированы следующим образом:
const request = indexedDB.open( 'myDB', 1 );
var db;
request.onupgradeneeded = ...
request.onsuccess = function() {
db = this.result; // Average 8ms
};
self.onfetch = function(e)
{
const requestURL = new URL( e.request.url ),
path = requestURL.pathname;
if( path === '/test' )
{
const response = new Promise( function( resolve )
{
console.log( performance.now(), typeof db ); // Average 15ms
db.transaction( 'cache' ).objectStore( 'cache' ).get( 'test' ).onsuccess = function()
{
resolve( new Response( this.result, { headers: { 'content-type':'text/plain' } } ) );
}
});
e.respondWith( response );
}
}
Может ли это привести к сбою при запуске ServiceWorker, и если да, то каков надежный способ доступа к indexedDB в ServiceWorker?