IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
746B

  1. class WBManifestWorkerWrapper {
  2. constructor() {
  3. this.worker = new Worker('/js/wb-manifest-worker.js');
  4. this.worker.onmessage = e => this.onMessage(e);
  5. this.worker.onerror = e => console.log(e);
  6. this.queue = [];
  7. }
  8. onMessage(e) {
  9. if (this.queue.length === 0)
  10. throw Error('Unexpected message from worker');
  11. const [msgType, accept, reject] = this.queue.splice(0, 1)[0];
  12. if (e.data[0] === msgType + 'Result')
  13. accept(e);
  14. else
  15. reject(e);
  16. }
  17. postMessage(m) {
  18. const prom = new Promise((accept, reject) => {
  19. this.queue.push([ m[0], accept, reject ]);
  20. this.worker.postMessage(m);
  21. });
  22. return prom;
  23. }
  24. }
  25. export default WBManifestWorkerWrapper;