tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }