在Webworker中使用ipcRenderer?

xavier.lord

我有一个电子应用程序,渲染器过程利用Webworker进行一些计算。

一切正常,但是现在我想将主流程中的消息直接发送到Webworker。

我尝试通过以下方式将electron对象附加到全局对象中index.html

<script>
  const electron = require('electron');
</script>

然后我想我可以在我的网络工作人员中得到它:

const ipcRenderer = self.electron.ipcRenderer

但这是行不通的,知道吗?

问候

米歇尔·提里(Michelle Tilley)

我们在Slack中讨论了这一点,但出于后人的考虑:

Worker使用无共享模型,因此您无法在页面中定义变量(即使是全局变量或附加到window),也无法期望其显示在Worker中。您只能发送项目postMessage(或以其他方式(例如Ajax请求)从Worker中获取项目)。但是,发送过来的数据postMessage必须能够被克隆。Worker.postMessage()

这可以是结构化克隆算法处理的任何值或JavaScript对象,包括循环引用

并从结构化克隆算法中得出

属性描述符,setter和getter(以及类似元数据的功能)不会重复。例如,如果使用属性描述符将对象标记为只读,则该对象将在重复对象中被读写,因为这是默认条件。原型链不会被复制。

因此,无法将electron对象“发送”到Worker中。一种解决方案是使用Electron的节点集成来要求它,但由于#797中所述的原因而不受支持支持您想要做的事情的一种潜在方法是将消息从主流程发送到渲染流程,然后将其转发给Worker

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Node.js中使用“大”数据启动Webworker时快速增加内存

来自分类Dev

Dart:用Dart编写并在dart2js中使用的浏览器Webworker中

来自分类Dev

在Node.js中使用“大”数据启动Webworker时快速增加内存

来自分类Dev

结合使用browserify和WebWorker

来自分类Dev

结合使用browserify和WebWorker

来自分类Dev

在需要时生成WebWorker或重复使用同一WebWorker?

来自分类Dev

何时使用远程vs ipcRenderer,ipcMain

来自分类Dev

使用前端javascript文件中的电子ipcRenderer

来自分类Dev

使用setTimeout进行AJAX Webworker轮询

来自分类Dev

如何在WebWorker上使用React组件

来自分类Dev

Webworker线程:是否可以在worker内部使用“ require”?

来自分类Dev

setInterval中的电子渲染器进程无法使用ipcRenderer.send()

来自分类Dev

使用Webpack拆分模块,以便可以将其加载到WebWorker中

来自分类Dev

使用WebWorker线程进行高负载并发测试期间的分段错误

来自分类Dev

将ng-webworker与应用程序一起使用不起作用

来自分类Dev

使用JavaScript类型BLOB中的WebWorker创建具有动态路径的WebSocket

来自分类Dev

在<a> </a>中使用“&”

来自分类Dev

如何在生产中最小化/丑化使用Angular构建的Webworker软件包

来自分类Dev

在函数中使用“使用”?

来自分类Dev

在C ++中使用“使用”

来自分类Dev

在函数中使用“使用”?

来自分类Dev

在使用中使用or /和

来自分类Dev

@angular/platform-webworker 与 @angular/platform-webworker-dynamic

来自分类Dev

如何使用给定本地URL的OffscreenCanvas在Webworker中调整图像大小并将调整大小后的数据返回到主线程?

来自分类Dev

ipcRenderer未从主进程接收消息

来自分类Dev

RestAPI,在参数中使用“ /”

来自分类Dev

在CMD中使用if条件

来自分类Dev

在sklearn中使用管道

来自分类Dev

在Ember中使用诺言

Related 相关文章

  1. 1

    在Node.js中使用“大”数据启动Webworker时快速增加内存

  2. 2

    Dart:用Dart编写并在dart2js中使用的浏览器Webworker中

  3. 3

    在Node.js中使用“大”数据启动Webworker时快速增加内存

  4. 4

    结合使用browserify和WebWorker

  5. 5

    结合使用browserify和WebWorker

  6. 6

    在需要时生成WebWorker或重复使用同一WebWorker?

  7. 7

    何时使用远程vs ipcRenderer,ipcMain

  8. 8

    使用前端javascript文件中的电子ipcRenderer

  9. 9

    使用setTimeout进行AJAX Webworker轮询

  10. 10

    如何在WebWorker上使用React组件

  11. 11

    Webworker线程:是否可以在worker内部使用“ require”?

  12. 12

    setInterval中的电子渲染器进程无法使用ipcRenderer.send()

  13. 13

    使用Webpack拆分模块,以便可以将其加载到WebWorker中

  14. 14

    使用WebWorker线程进行高负载并发测试期间的分段错误

  15. 15

    将ng-webworker与应用程序一起使用不起作用

  16. 16

    使用JavaScript类型BLOB中的WebWorker创建具有动态路径的WebSocket

  17. 17

    在<a> </a>中使用“&”

  18. 18

    如何在生产中最小化/丑化使用Angular构建的Webworker软件包

  19. 19

    在函数中使用“使用”?

  20. 20

    在C ++中使用“使用”

  21. 21

    在函数中使用“使用”?

  22. 22

    在使用中使用or /和

  23. 23

    @angular/platform-webworker 与 @angular/platform-webworker-dynamic

  24. 24

    如何使用给定本地URL的OffscreenCanvas在Webworker中调整图像大小并将调整大小后的数据返回到主线程?

  25. 25

    ipcRenderer未从主进程接收消息

  26. 26

    RestAPI,在参数中使用“ /”

  27. 27

    在CMD中使用if条件

  28. 28

    在sklearn中使用管道

  29. 29

    在Ember中使用诺言

热门标签

归档