`title: Web Workers 与主线程协作的持久化架构``categories: Web 开发/前端/数据管理``keywords: Web Worker,SharedWorker,消息,Streams,OPFS,IndexedDB``description: 设计面向持久化的主线程-Worker 协作模型,使用消息与流传递数据,在 Worker 内执行写入 OPFS/IndexedDB 以避免主线程阻塞。`消息契约// main

const w = new Worker('/persistence-worker.js');

w.postMessage({ type: 'write-opfs', name: 'out.bin', bytes });

// worker

self.onmessage = async ({ data }) => {

if (data.type === 'write-opfs') {

const root = await navigator.storage.getDirectory();

const handle = await root.getFileHandle(data.name, { create: true });

const sync = await handle.createSyncAccessHandle();

try { sync.write(data.bytes); sync.flush(); } finally { sync.close(); }

}

};

流式管道async function netToOPFS(url, name) {

const res = await fetch(url);

const root = await navigator.storage.getDirectory();

const handle = await root.getFileHandle(name, { create: true });

const writable = await handle.createWritable();

await res.body.pipeTo(writable);

}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部