main.worker.ts 864 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import modalWorker from "./loadGltf.worker?worker";
  2. import Dexie from 'dexie';
  3. import { useGlobSetting } from '/@/hooks/setting';
  4. const glob = useGlobSetting();
  5. const db:any = new Dexie('DB')
  6. window['CustomDB'] = db
  7. export function initModalWorker () {
  8. db.version(1).stores({
  9. modal: "++id, modalName, modalVal",
  10. })
  11. const worker = new modalWorker()
  12. worker.onmessage = async function(e) {
  13. const { data, message } = e.data;
  14. if(message === 'end'){
  15. setTimeout(() => {
  16. worker.terminate()
  17. }, 10000)
  18. }
  19. }
  20. glob.modalUrlArr.forEach( async (url) => {
  21. const modalName = url.replace(/(.*\/)*([^.]+).*/ig,"$2")
  22. const modalArr = await db.modal.where('modalName').equals(modalName).toArray()
  23. if(modalArr.length < 1) {
  24. worker.postMessage({message: 'load', data: url})
  25. }
  26. });
  27. }
  28. initModalWorker()