Javascript 渲染过程的电子崩溃事件触发得太晚? 问题描述:
我在渲染过程中使用Javascript 渲染过程的电子崩溃事件触发得太晚? 问题描述:,javascript,electron,chromium,Javascript,Electron,Chromium,我在渲染过程中使用process.crash()或process.abort()。 而且花了很长时间才收到坠机事件 这可能会导致不良的用户体验: 如果由于某种原因在呈现过程中发生崩溃,用户需要在无响应页面上等待很长时间(约20-30秒),并且在很长时间后调用webContents.addListener的回调(“崩溃的”),然后开发人员可以做些事情 我的探索: 我在电子源代码中搜索并找到: void WebContents::RenderProcessGone(base::Termination
process.crash()
或process.abort()
。
而且花了很长时间才收到坠机事件
这可能会导致不良的用户体验:
如果由于某种原因在呈现过程中发生崩溃,用户需要在无响应页面上等待很长时间(约20-30秒),并且在很长时间后调用webContents.addListener的回调(“崩溃的”
),然后开发人员可以做些事情
我的探索:
我在电子源代码中搜索并找到:
void WebContents::RenderProcessGone(base::TerminationStatus status) {
Emit("crashed", status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
}
这是向win.webContents
发出崩溃事件的正确函数吗
可能与铬的加工有关
受我知识水平的限制,我对这部分不是很清楚
一些原理图代码:
实际上,应用程序要复杂得多
通缉:
我想知道为什么调用process.crash()
或process.abort()
调用crash
事件需要很长时间?在这段时间内,电子或铬做了什么
我想知道是否有解决此问题的解决方案(尽快获取崩溃的事件)
const win = new BrowserWindow({
// some config...
});
win.webContents.addListener('crashed', () => {
// This callback is triggered too late
if (!win.isDestroyed()) {
win.close();
}
});