file_blob_response_worker.js (1237B)
1 function makeFileBlob(obj) { 2 return new Promise(function (resolve, reject) { 3 var request = indexedDB.open("file_blob_response_worker", 1); 4 request.onerror = reject; 5 request.onupgradeneeded = function (evt) { 6 var db = evt.target.result; 7 db.onerror = reject; 8 9 var objectStore = db.createObjectStore("test", { autoIncrement: true }); 10 var index = objectStore.createIndex("test", "index"); 11 }; 12 13 request.onsuccess = function (evt) { 14 var db = evt.target.result; 15 db.onerror = reject; 16 17 var blob = new Blob([JSON.stringify(obj)], { type: "application/json" }); 18 var data = { blob, index: 5 }; 19 20 objectStore = db.transaction("test", "readwrite").objectStore("test"); 21 objectStore.add(data).onsuccess = function (event) { 22 var key = event.target.result; 23 objectStore = db.transaction("test").objectStore("test"); 24 objectStore.get(key).onsuccess = function (event1) { 25 resolve(event1.target.result.blob); 26 }; 27 }; 28 }; 29 }); 30 } 31 32 self.addEventListener("fetch", function (evt) { 33 var result = { value: "success" }; 34 evt.respondWith( 35 makeFileBlob(result).then(function (blob) { 36 return new Response(blob); 37 }) 38 ); 39 });