小编dki*_*hof的帖子

服务人员:与awaituntil结合使用的异步等待功能无法正常工作

使用async/await语法时,我在服务人员中无法兑现承诺。
出现以下情况:我收到了推送通知,并想处理click事件。如果我将“旧”语法与then和一起使用,catch我可以遍历客户端列表并对其进行处理。如果我使用我偏爱的方式async/await将不会执行任何操作。

self.addEventListener("notificationclick", event => {

  // is working
  event.waitUntil(self.clients.matchAll().then(clientList => {
    console.log(clientList);
  }));

  // is not working
  event.waitUntil(async () => {
    const clientList = await self.clients.matchAll();
    console.log(clientList);
  });
});
Run Code Online (Sandbox Code Playgroud)

javascript push-notification async-await service-worker service-worker-events

7
推荐指数
1
解决办法
1007
查看次数

在Electron中确认前卸载

我知道有成百上千个问题,例如:“如何防止电子中的紧密事件”或类似的问题。
在事件中实现确认框(电子消息框)后,beforeunload我能够关闭我的应用并取消关闭事件。由于开发工具始终处于打开状态,因此我不认识到在关闭开发工具时它不起作用...

window.onbeforeunload = e =>
{           
    // show a message box with "save", "don't save", and "cancel" button
    let warning = remote.dialog.showMessageBox(...) 

    switch(warning)
    {
        case 0:
            console.log("save");
            return;
        case 1:
            console.log("don't save");
            return;
        case 2:
            console.log("cancel");
            return false;
            // e.returnValue = "false";
            // e.returnValue = false;
    }
};
Run Code Online (Sandbox Code Playgroud)

因此,当打开开发工具时,我可以保存并关闭应用程序,而无需保存和取消事件。
关闭开发工具后,“取消”按钮不再起作用。

顺便说一句:

window.onbeforeunload = e =>
{           
    return false;
    alert("foo");
};
Run Code Online (Sandbox Code Playgroud)

将取消关闭事件,并且显然不会显示消息(开发工具是打开还是关闭都没关系)

window.onbeforeunload = e =>
{           
    alert("foo");
    return false;
};
Run Code Online (Sandbox Code Playgroud)

如果打开了开发工具,则在按OK后将取消关闭事件;如果关闭了开发工具,则在按OK后将关闭应用程序

我故意使用消息框的同步api,在编写此问题时,我发现两个窗口化的应用程序(new remote.BrowserWindow())的行为与开发工具完全相同。

有谁知道我如何解决这个问题?
提前谢谢了

javascript confirm onbeforeunload electron

2
推荐指数
1
解决办法
2701
查看次数