electron “loadURL”电子-Angular 项目仅在Angular 编译器准备就绪时

z0qdvdin  于 2022-12-16  发布在  Electron
关注(0)|答案(2)|浏览(169)

在许多电子Angular 教程中,你创建窗口并在超时后从localhost加载index.html。
//设置超时以在Angular //编译器准备好显示项目之前呈现窗口
现在我想一定有一种方法,不只是随意地等待十秒钟,而是有某种事件来行动。
不幸的是,loadURL返回“true”,即使本地主机还不能访问,所以win.once('ready-to-show')在实际上还没有准备好显示时也会被调用。
理想情况下,我希望有一个加载屏幕,直到Angular 编译器准备好。任何想法?谢谢!

8dtrkrch

8dtrkrch1#

由于我找不到替代方案,我实施了以下解决方案:

checkForLoad = setInterval(function () {
                if (!didLoad) {
                    win.webContents.reload();
                }
                else {
                    clearInterval(checkForLoad);
                    win.show();
                }
            }, 2000);

我每隔几秒就重新加载一次页面。在Angular中,我只需要在Angular应用程序实际运行时发送IPC消息,将“didLoad”更改为true。运行得很好,但显然最好有一个事件来执行。同时,它已经足够接近了。

olhwl3o2

olhwl3o22#

我找到了以下解决方案:
在Angular AppComponent中调用全局方法:
window.electron.appControl.isReady()
其中调用
isReady: () => ipcRenderer.send('appControl', AppControlEvents.IsReady),
在electronmain.ts中,我为该事件设置了标志

ipcMain.on('appControl', (event, eventType) => {
  switch (eventType) {
    ...
    case AppControlEvents.IsReady:
       this.isReadyHandler();
       break;
  }
})

字符串
在这个处理程序中,我们确信角速度是加载

相关问题