网络工作者-获取数据并将其存储到浏览器扩展数据库中

问题描述

我想使用网络工作者来加快某些图像和数据获取操作的速度。我已经创建了工作进程,并且可以按预期运行,但是我的浏览器扩展后台文件存在问题。安装扩展程序后,我已经实现了nedb-promises来存储数据,并提取了数据以供以后将其用于扩展程序中。问题是我无法保存从工作程序传递的读取数据。接收数据时我正在创建的数据库字段将始终为空。我该如何解决

import nedb from 'nedb-promises';

const db = nedb.create({ filename: 'cache',autoload: true });
const worker = new Worker('js/worker.js');

browser.runtime.onInstalled.addListener( (details) => {
  console.log(details);
  db.insert({ imagesData: null});
  worker.postMessage('fetchImages');
});

browser.runtime.onStartup.addListener( () => {
  db.findOne({ imagesData: {$exists: true } })
  .then( (data) => {
    console.log(data);
    if( data ){
      browser.runtime.sendMessage(data);
    }else{
      worker.postMessage('fetchImages');
    }
  });
});

worker.onmessage = async (e) => {
  console.log(e);
  const data = e.data;
  console.log(data);
  const update = await db.update({ imagesData: {$exists: true} },{ $set: { imagesData: data } });
  browser.runtime.sendMessage(data);
}

browser.tabs.onCreated.addListener( () => {
  db.findOne({ imagesData: {$exists: true} })
  .then( (data) => {
    console.log(data);
    browser.runtime.sendMessage(data.imagesData);
  });
  console.log('tab created');
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)