问题描述
我想使用网络工作者来加快某些图像和数据获取操作的速度。我已经创建了工作进程,并且可以按预期运行,但是我的浏览器扩展后台文件存在问题。安装扩展程序后,我已经实现了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 (将#修改为@)