【问题标题】:How to deliver information to webworker when it requests it如何在 webworker 请求时将信息传递给它
【发布时间】:2021-01-07 00:51:49
【问题描述】:

我有一段代码需要在 webworker 上执行,它需要从主线程中的某些东西中获取反馈(基本上是来自 KVS 的 get 操作)。不幸的是,我无法使用本地存储,因为网络工作者无法访问它。有没有其他方法可以将信息从主线程传递给网络工作者,以便当网络工作者想要这条信息时,它可以得到它?

另一个注意事项是,我对所有事情都使用了 brython,我不确定这是否会阻止我使用 IndexedDB 等传统 JavaScript 解决方案。非常感谢您的指导。

【问题讨论】:

  • const worker = new Worker('sendToPage.js'); worker.postMessage(someJSONHere); 是 WebWorkers 发送可以在sendToPage.js 上使用onmessage = e=>{ const data = e.data; } 接收的数据的方式。所以,信息可用onmessage
  • 感谢您提供的信息,但是如果之前在 webworker 上运行的 onmessage 代码怎么办?是否仍会收到此消息,还是我们必须等待原始代码完成?如果我希望收到此消息,尽管当前正在运行以前的 onmessage 处理程序。

标签: javascript html local-storage web-worker brython


【解决方案1】:

SharedArrayBuffer 是一种在主线程和 webworker 之间共享内存的方式。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2019-08-26
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多