fetch-event-respond-with-partial-stream-worker.js (620B)
1 let waitUntilResolve; 2 3 let bodyController; 4 5 self.addEventListener('message', evt => { 6 if (evt.data === 'done') { 7 bodyController.close(); 8 waitUntilResolve(); 9 } 10 }); 11 12 self.addEventListener('fetch', evt => { 13 if (!evt.request.url.includes('partial-stream.txt')) { 14 return; 15 } 16 17 evt.waitUntil(new Promise(resolve => waitUntilResolve = resolve)); 18 19 let body = new ReadableStream({ 20 start: controller => { 21 let encoder = new TextEncoder(); 22 controller.enqueue(encoder.encode('partial-stream-content')); 23 bodyController = controller; 24 }, 25 }); 26 27 evt.respondWith(new Response(body)); 28 });