使用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
我知道有成百上千个问题,例如:“如何防止电子中的紧密事件”或类似的问题。
在事件中实现确认框(电子消息框)后,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())的行为与开发工具完全相同。
有谁知道我如何解决这个问题?
提前谢谢了