【问题标题】:Send message from main process to renderer and receive response synchronously?从主进程向渲染器发送消息并同步接收响应?
【发布时间】:2022-01-27 02:10:09
【问题描述】:

我正在尝试向电子应用程序添加自定义动态上下文菜单(目前通过electron-context-menu)。为了让它是动态的,它需要关于它被点击的应用程序部分的信息。只有渲染器进程可以提供该信息。因此,我需要以某种方式从主进程向渲染器发送请求并同步接收答案。

有没有办法做到这一点?或者也许有更好的方法来实现这一点?

我的渲染器进程处于隔离模式,因此无法使用remote 模块。 我可以通过ipcRenderer 接收从渲染器发送到主进程的请求的同步响应,但不知道有什么方法可以从主进程到渲染进程。

【问题讨论】:

  • 我对电子不是特别熟悉,但是“因此我需要以某种方式从主进程向渲染器发送请求并同步接收答案”闻起来像是不合逻辑的。 Javascript(以及一般的 UI)是事件驱动的异步系统,为什么它必须是同步的? (不是 DV 顺便说一句)
  • 好吧,因为它必须在主进程的context-menu 事件期间完成。当然,我愿意接受任何其他建议如何实现这一点。

标签: javascript typescript electron


【解决方案1】:

我没有意识到渲染器中的contextmenu事件在主进程接收到context-menu事件之前触发......所以它允许使用这个方法:

  1. 在渲染器中监听窗口上的contextmenu事件,收集 关于它被点击的元素的信息。
  2. 通过ipcRenderer将该信息发送到主进程
  3. 在主进程中监听context-menu事件并存储收到params 全局变量中的信息
  4. 在主进程中还监听来自ipcMain 渲染的消息。收到消息后,使用消息中提供的信息和存储在全局变量中的params 来显示菜单。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2016-07-05
    • 2019-02-07
    • 2017-03-25
    • 1970-01-01
    • 2023-02-10
    • 2019-01-31
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多