在使用async / await语法时,我正在努力应对服务工作者的承诺.
以下情况:我收到了推送通知,并希望处理点击事件.如果我使用“旧”语法然后捕获我可以在客户端列表上的iteratore并使用它做一些事情.如果我使用我喜欢的方式与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);
});
});
最佳答案
感谢@Crice和@Keith,
waitUntil需要一个promise作为参数而不是一个函数.所以这是async / await风格的工作示例:
self.addEventListener("notificationclick",event =>
{
event.waitUntil(getClients());
});
async function getClients()
{
const clientList = await self.clients.matchAll();
console.log(clientList);
}