shared-worker-partitioned-cookies-helper.js (706B)
1 // Return a generator containing the worker's message. 2 // 3 // Usage: 4 // const worker = new SharedWorker(...); 5 // const nextMessage = worker_message_generator(worker); 6 // const msg_1 = await nextMessage(); 7 // const msg_2 = await nextMessage(); 8 // const msg_3 = await nextMessage(); 9 function worker_message_generator(shared_worker) { 10 const buffer = []; 11 let resolve = null; 12 13 shared_worker.port.onmessage = message => { 14 buffer.push(message.data); 15 if (resolve) { 16 resolve(); 17 } 18 } 19 shared_worker.port.start(); 20 21 return async function() { 22 if (buffer.length != 0) { 23 return buffer.shift(); 24 } 25 await new Promise(r => resolve = r); 26 return buffer.shift(); 27 } 28 }