【发布时间】:2019-09-15 05:52:49
【问题描述】:
我知道主进程中的 CPU 密集型工作会阻塞 UI 进程。我还有一个问题,主进程中长时间的 IO 操作会阻塞 UI。 最近用electron开发了一个文件管理的桌面应用。
第 1 步:
我的 UI 进程使用异步 IPC(由 Electron 提供)告诉主进程从网络中获取文件列表的数据,(仅获取文件的元数据,不包含文件内容)
第 2 步:
主进程从网络中获取文件列表的数据,然后将文件列表存储到sqlite中(我使用TypeORM),然后从sqlite中选择部分文件列表,并将它们返回给UI进程
有时step2需要几十秒(比如我从网络获取10000条文件数据),我的UI会变慢。
所以,我有两个问题: + 主进程中长时间的 IO 操作会阻塞 UI 吗? + 在电子应用中进行 IO 操作(数据库或本地文件)的最佳方式是什么?
【问题讨论】:
-
在主进程和渲染进程之间移动大块数据可能会减慢 Electron。你如何“让他们回复 UI 流程”?
-
我使用 ipc 异步,只是转换纯 json 字符串 @PelayoMéndez 现在我尝试将我的数据管理器逻辑从主进程移动到另一个进程
-
是的,尝试这样做。阻塞主进程不是一个好主意。为了使操作真正异步,它应该在它的进程上运行。检查这篇文章是否包含在一个真实世界示例中关于这个问题的一个很好的解释:medium.com/actualbudget/…
标签: javascript node.js electron