gpt4 book ai didi

javascript - 我们可以使用来自 Webworker 的 JavaScript FileSystemAPI 吗?

转载 作者:行者123 更新时间:2023-12-05 00:38:15 25 4
gpt4 key购买 nike

我们可以使用来自 webworker 的 JavaScript FileSystemAPI 吗?
https://developer.mozilla.org/en-US/docs/Web/API/FileSystem
在他们的文档中,他们没有提到任何东西,但在使用它时没有定义它的 throw 窗口。
谢谢!

最佳答案

并不真地...
曾经有一个self.webkitRequestFileSystemSync()在 Worker 范围内可以访问的方法,但它已被弃用。并且您从 drop 事件中获得的 FileSystem 对象不能被序列化,因此不能从主线程发布到 Worker。
但是,我怀疑您并不想使用 FileSystem API,它在 Web 上下文中并没有真正有用,但您可能更喜欢 File System Access API ,这使您的页面可以访问用户的文件系统(即使它仍然仅在基于 Chromium 的浏览器中可用)。
但是从 Web Worker 中使用这个 API 也并不简单。
要向文件系统访问 API 发出请求,我们需要处理用户手势。 Web Worker 无权访问 UI,因此他们也无权访问 UI 事件 (yet)。
所以我们必须从 UI 线程发出请求。
然而,与 FileSystem 对象相反,FileSystemHandles 是可序列化的,并且可以通过 postMessage() 发布。 ,所以一旦你拿到了句柄,你就可以把它发布给你的 worker ,然后从那里开始工作。
在 UI 线程中

btn.onclick = async (evt) => {
const dirHandle = await showDirectoryPicker();
worker.postMessage( dirHandle );
};
然后在 Worker 线程中,您可以在 MesageEvent.data 中接收该句柄。 , 并像在主线程中一样使用它。
这是 live demo , 及其 source .

关于javascript - 我们可以使用来自 Webworker 的 JavaScript FileSystemAPI 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68062032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com